Join strings with different last delimiter

前端 未结 7 1174
感情败类
感情败类 2021-01-04 12:04

Using stream.collect(Collectors.joining(\", \")) I can easily join all the strings of my stream delimited by a comma. A possible result would be \"a, b, c

7条回答
  •  慢半拍i
    慢半拍i (楼主)
    2021-01-04 12:47

    This is not a Streams-API solution but is pretty fast. Enjoy!

    public static final  String join(
        Iterable objects, String separator, String lastSeparator) 
    {
        Objects.requireNonNull(objects);
    
        final String sep = separator == null ? "" : separator;
        final String lastSep = lastSeparator == null ? sep : lastSeparator;
    
        final StringBuilder builder = new StringBuilder();
    
        final Iterator iterator = objects.iterator();
        while (iterator.hasNext()) {
            final E next = iterator.next();
            if (builder.length() > 0) {
                if (iterator.hasNext()) {
                    builder.append(sep);
                }
                else {
                    builder.append(lastSep);
                }
            }
            builder.append(next);
        }
    
        return builder.toString();
    }
    

提交回复
热议问题