28 Mart 2019 Perşembe

StringJoiner Sınıfı

Giriş
Açıklaması şöyle. Bu sınıf yerine Collectors.joining kullanılabilir
StringJoiner is used to construct a sequence of characters separated by a delimiter and optionally starting with a supplied prefix and ending with a supplied suffix.
Temel olarak bu sınıfın sadece add() metodunu arka arkaya çağırıp, işimiz bitince toString() metodunu çağırıyoruz. add() metodunu arka arkaya çağırmak yerine Collectors.joining() metodunu kullanmak daha kolay olabilir. Collectors.joining() altta StringJoiner sınıfını kullanır ve bu sınıfın verdiği aynı metodları sağlar. Böylece döngüler kurmak yerine stream ile daha kolay çalışabiliriz.

constructor - delimeter
Şöyle yaparız.
String str = new StringJoiner(",").add("a").add("b").add("c").toString();
constructor - delimeter + prefix + suffix
İmzası şöyle.
StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix)
Örnek
Şöyle yaparız
List<Integer> ints = Arrays.asList(123, 456, 789);
StringJoiner mystring = new StringJoiner("),(", "(", ")");
ints.forEach(i -> mystring.add(String.valueOf(i)));
        
System.out.println( mystring );
Çıktı olarak şunu alırız
(123), (456), (789)
Örnek
Şöyle yaparız. Çıktı olarak "Bill and Bob and Steve" alırız
StringJoiner sj = new StringJoiner(" and ", "" , "");
String[] names = {"Bill", "Bob", "Steve"};
for (String name : names) {
   sj.add(name);
}
System.out.println(sj);
add metodu
Şöyle yaparız. Çıktı olarak örneğin "[Bill and Bob and Steve]" alırız
private String getCookieString(Cookie[] cookies){
  if(cookies == null)
    return "null";
  StringJoiner stringJoiner = new StringJoiner(",","[","]");
  for (Cookie cookie : cookies) {
    stringJoiner.add(ReflectionToStringBuilder.toString(cookie));
  }
  return stringJoiner.toString();
}

Hiç yorum yok:

Yorum Gönder