Use StringJoiner where possible to simplify String joining

Closes gh-23300
This commit is contained in:
stsypanov
2019-07-16 20:45:21 +03:00
committed by Sam Brannen
parent 5190eaf503
commit 1d6e44ab04
3 changed files with 155 additions and 127 deletions

View File

@@ -18,10 +18,10 @@ package org.springframework.core.style;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.StringJoiner;
import org.springframework.lang.Nullable;
import org.springframework.util.ClassUtils;
@@ -82,20 +82,15 @@ public class DefaultValueStyler implements ValueStyler {
}
private <K, V> String style(Map<K, V> value) {
StringBuilder result = new StringBuilder(value.size() * 8 + 16);
result.append(MAP + "[");
for (Iterator<Map.Entry<K, V>> it = value.entrySet().iterator(); it.hasNext();) {
Map.Entry<K, V> entry = it.next();
result.append(style(entry));
if (it.hasNext()) {
result.append(',').append(' ');
}
}
if (value.isEmpty()) {
result.append(EMPTY);
return MAP + '[' + EMPTY + ']';
}
result.append("]");
return result.toString();
StringJoiner result = new StringJoiner(", ", "[", "]");
for (Map.Entry<K, V> entry : value.entrySet()) {
result.add(style(entry));
}
return MAP + result;
}
private String style(Map.Entry<?, ?> value) {
@@ -103,19 +98,17 @@ public class DefaultValueStyler implements ValueStyler {
}
private String style(Collection<?> value) {
StringBuilder result = new StringBuilder(value.size() * 8 + 16);
result.append(getCollectionTypeString(value)).append('[');
for (Iterator<?> i = value.iterator(); i.hasNext();) {
result.append(style(i.next()));
if (i.hasNext()) {
result.append(',').append(' ');
}
}
String collectionType = getCollectionTypeString(value);
if (value.isEmpty()) {
result.append(EMPTY);
return collectionType + '[' + EMPTY + ']';
}
result.append("]");
return result.toString();
StringJoiner result = new StringJoiner(", ", "[", "]");
for (Object o : value) {
result.add(style(o));
}
return collectionType + result;
}
private String getCollectionTypeString(Collection<?> value) {
@@ -131,20 +124,15 @@ public class DefaultValueStyler implements ValueStyler {
}
private String styleArray(Object[] array) {
StringBuilder result = new StringBuilder(array.length * 8 + 16);
result.append(ARRAY + "<").append(ClassUtils.getShortName(array.getClass().getComponentType())).append(">[");
for (int i = 0; i < array.length - 1; i++) {
result.append(style(array[i]));
result.append(',').append(' ');
if (array.length == 0) {
return ARRAY + '<' + ClassUtils.getShortName(array.getClass().getComponentType()) + '>' + '[' + EMPTY + ']';
}
if (array.length > 0) {
result.append(style(array[array.length - 1]));
StringJoiner result = new StringJoiner(", ", "[", "]");
for (Object o : array) {
result.add(style(o));
}
else {
result.append(EMPTY);
}
result.append("]");
return result.toString();
return ARRAY + '<' + ClassUtils.getShortName(array.getClass().getComponentType()) + '>' + result;
}
}

View File

@@ -734,19 +734,11 @@ public abstract class ObjectUtils {
if (length == 0) {
return EMPTY_ARRAY;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++) {
if (i == 0) {
sb.append(ARRAY_START);
}
else {
sb.append(ARRAY_ELEMENT_SEPARATOR);
}
sb.append(array[i]);
StringJoiner sj = new StringJoiner(ARRAY_ELEMENT_SEPARATOR, ARRAY_START, ARRAY_END);
for (boolean b : array) {
sj.add(String.valueOf(b));
}
sb.append(ARRAY_END);
return sb.toString();
return sj.toString();
}
/**
@@ -766,18 +758,11 @@ public abstract class ObjectUtils {
if (length == 0) {
return EMPTY_ARRAY;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++) {
if (i == 0) {
sb.append(ARRAY_START);
}
else {
sb.append(ARRAY_ELEMENT_SEPARATOR);
}
sb.append(array[i]);
StringJoiner sj = new StringJoiner(ARRAY_ELEMENT_SEPARATOR, ARRAY_START, ARRAY_END);
for (byte b : array) {
sj.add(String.valueOf(b));
}
sb.append(ARRAY_END);
return sb.toString();
return sj.toString();
}
/**
@@ -797,18 +782,11 @@ public abstract class ObjectUtils {
if (length == 0) {
return EMPTY_ARRAY;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++) {
if (i == 0) {
sb.append(ARRAY_START);
}
else {
sb.append(ARRAY_ELEMENT_SEPARATOR);
}
sb.append("'").append(array[i]).append("'");
StringJoiner sj = new StringJoiner(ARRAY_ELEMENT_SEPARATOR, ARRAY_START, ARRAY_END);
for (char c : array) {
sj.add('\'' + String.valueOf(c) + '\'');
}
sb.append(ARRAY_END);
return sb.toString();
return sj.toString();
}
/**
@@ -828,19 +806,11 @@ public abstract class ObjectUtils {
if (length == 0) {
return EMPTY_ARRAY;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++) {
if (i == 0) {
sb.append(ARRAY_START);
}
else {
sb.append(ARRAY_ELEMENT_SEPARATOR);
}
sb.append(array[i]);
StringJoiner sj = new StringJoiner(ARRAY_ELEMENT_SEPARATOR, ARRAY_START, ARRAY_END);
for (double d : array) {
sj.add(String.valueOf(d));
}
sb.append(ARRAY_END);
return sb.toString();
return sj.toString();
}
/**
@@ -860,19 +830,11 @@ public abstract class ObjectUtils {
if (length == 0) {
return EMPTY_ARRAY;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++) {
if (i == 0) {
sb.append(ARRAY_START);
}
else {
sb.append(ARRAY_ELEMENT_SEPARATOR);
}
sb.append(array[i]);
StringJoiner sj = new StringJoiner(ARRAY_ELEMENT_SEPARATOR, ARRAY_START, ARRAY_END);
for (float f : array) {
sj.add(String.valueOf(f));
}
sb.append(ARRAY_END);
return sb.toString();
return sj.toString();
}
/**
@@ -892,18 +854,11 @@ public abstract class ObjectUtils {
if (length == 0) {
return EMPTY_ARRAY;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++) {
if (i == 0) {
sb.append(ARRAY_START);
}
else {
sb.append(ARRAY_ELEMENT_SEPARATOR);
}
sb.append(array[i]);
StringJoiner sj = new StringJoiner(ARRAY_ELEMENT_SEPARATOR, ARRAY_START, ARRAY_END);
for (int i : array) {
sj.add(String.valueOf(i));
}
sb.append(ARRAY_END);
return sb.toString();
return sj.toString();
}
/**
@@ -923,18 +878,11 @@ public abstract class ObjectUtils {
if (length == 0) {
return EMPTY_ARRAY;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++) {
if (i == 0) {
sb.append(ARRAY_START);
}
else {
sb.append(ARRAY_ELEMENT_SEPARATOR);
}
sb.append(array[i]);
StringJoiner sj = new StringJoiner(ARRAY_ELEMENT_SEPARATOR, ARRAY_START, ARRAY_END);
for (long l : array) {
sj.add(String.valueOf(l));
}
sb.append(ARRAY_END);
return sb.toString();
return sj.toString();
}
/**
@@ -954,18 +902,11 @@ public abstract class ObjectUtils {
if (length == 0) {
return EMPTY_ARRAY;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++) {
if (i == 0) {
sb.append(ARRAY_START);
}
else {
sb.append(ARRAY_ELEMENT_SEPARATOR);
}
sb.append(array[i]);
StringJoiner sj = new StringJoiner(ARRAY_ELEMENT_SEPARATOR, ARRAY_START, ARRAY_END);
for (short s : array) {
sj.add(String.valueOf(s));
}
sb.append(ARRAY_END);
return sb.toString();
return sj.toString();
}
}