Use StringJoiner where possible to simplify String joining

This commit is contained in:
stsypanov
2019-04-04 16:54:31 +03:00
committed by Juergen Hoeller
parent 07e9f802f2
commit 383f18e214
5 changed files with 21 additions and 35 deletions

View File

@@ -22,6 +22,7 @@ import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import java.util.StringJoiner;
import org.springframework.lang.Nullable;
import org.springframework.util.StringUtils;
@@ -242,11 +243,10 @@ public class DefaultMessageCodesResolver implements MessageCodesResolver, Serial
* null elements altogether.
*/
public static String toDelimitedString(String... elements) {
StringBuilder rtn = new StringBuilder();
StringJoiner rtn = new StringJoiner(CODE_SEPARATOR);
for (String element : elements) {
if (StringUtils.hasLength(element)) {
rtn.append(rtn.length() == 0 ? "" : CODE_SEPARATOR);
rtn.append(element);
rtn.add(element);
}
}
return rtn.toString();

View File

@@ -19,6 +19,7 @@ package org.springframework.core.convert.support;
import java.util.Collection;
import java.util.Collections;
import java.util.Set;
import java.util.StringJoiner;
import org.springframework.core.convert.ConversionService;
import org.springframework.core.convert.TypeDescriptor;
@@ -64,18 +65,13 @@ final class CollectionToStringConverter implements ConditionalGenericConverter {
if (sourceCollection.isEmpty()) {
return "";
}
StringBuilder sb = new StringBuilder();
int i = 0;
StringJoiner sj = new StringJoiner(DELIMITER);
for (Object sourceElement : sourceCollection) {
if (i > 0) {
sb.append(DELIMITER);
}
Object targetElement = this.conversionService.convert(
sourceElement, sourceType.elementTypeDescriptor(sourceElement), targetType);
sb.append(targetElement);
i++;
sj.add(String.valueOf(targetElement));
}
return sb.toString();
return sj.toString();
}
}

View File

@@ -18,6 +18,7 @@ package org.springframework.messaging.handler;
import java.util.Collection;
import java.util.Iterator;
import java.util.StringJoiner;
import org.springframework.lang.Nullable;
@@ -51,16 +52,11 @@ public abstract class AbstractMessageCondition<T extends AbstractMessageConditio
@Override
public String toString() {
StringBuilder builder = new StringBuilder("[");
for (Iterator<?> iterator = getContent().iterator(); iterator.hasNext();) {
Object expression = iterator.next();
builder.append(expression.toString());
if (iterator.hasNext()) {
builder.append(getToStringInfix());
}
StringJoiner joiner = new StringJoiner(getToStringInfix(), "[", "]");
for (Object expression : getContent()) {
joiner.add(expression.toString());
}
builder.append("]");
return builder.toString();
return joiner.toString();
}

View File

@@ -22,6 +22,7 @@ import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.StringJoiner;
import org.springframework.core.io.InputStreamResource;
import org.springframework.core.io.Resource;
@@ -210,13 +211,9 @@ public abstract class HttpRange {
*/
public static String toString(Collection<HttpRange> ranges) {
Assert.notEmpty(ranges, "Ranges Collection must not be empty");
StringBuilder builder = new StringBuilder(BYTE_RANGE_PREFIX);
for (Iterator<HttpRange> iterator = ranges.iterator(); iterator.hasNext(); ) {
HttpRange range = iterator.next();
builder.append(range);
if (iterator.hasNext()) {
builder.append(", ");
}
StringJoiner builder = new StringJoiner(", ", BYTE_RANGE_PREFIX, "");
for (HttpRange range : ranges) {
builder.add(range.toString());
}
return builder.toString();
}

View File

@@ -26,6 +26,7 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.StringJoiner;
import java.util.function.BiFunction;
import java.util.function.UnaryOperator;
@@ -916,14 +917,10 @@ final class HierarchicalUriComponents extends UriComponents {
@Override
public String getPath() {
StringBuilder pathBuilder = new StringBuilder();
pathBuilder.append(PATH_DELIMITER);
for (Iterator<String> iterator = this.pathSegments.iterator(); iterator.hasNext(); ) {
String pathSegment = iterator.next();
pathBuilder.append(pathSegment);
if (iterator.hasNext()) {
pathBuilder.append(PATH_DELIMITER);
}
String delimiter = String.valueOf(PATH_DELIMITER);
StringJoiner pathBuilder = new StringJoiner(delimiter, delimiter, "");
for (String pathSegment : this.pathSegments) {
pathBuilder.add(pathSegment);
}
return pathBuilder.toString();
}