diff --git a/java/debugger/openapi/src/com/intellij/debugger/engine/DebuggerUtils.java b/java/debugger/openapi/src/com/intellij/debugger/engine/DebuggerUtils.java index d28d52b6f173..1480db8a5ca7 100644 --- a/java/debugger/openapi/src/com/intellij/debugger/engine/DebuggerUtils.java +++ b/java/debugger/openapi/src/com/intellij/debugger/engine/DebuggerUtils.java @@ -78,17 +78,11 @@ public abstract class DebuggerUtils { } if (value instanceof ObjectReference) { if (value instanceof ArrayReference) { - final StringBuilder builder = new StringBuilder(); - builder.append("["); - for (Iterator iterator = ((ArrayReference)value).getValues().iterator(); iterator.hasNext();) { - final Value element = iterator.next(); - builder.append(getValueAsString(evaluationContext, element)); - if (iterator.hasNext()) { - builder.append(","); - } + final StringJoiner joiner = new StringJoiner(",", "[", "]"); + for (final Value element : ((ArrayReference)value).getValues()) { + joiner.add(getValueAsString(evaluationContext, element)); } - builder.append("]"); - return builder.toString(); + return joiner.toString(); } final ObjectReference objRef = (ObjectReference)value; diff --git a/java/idea-ui/src/com/intellij/ide/util/importProject/ProjectLayoutPanel.java b/java/idea-ui/src/com/intellij/ide/util/importProject/ProjectLayoutPanel.java index bff5d1d44a94..c3a20e2e3e6b 100644 --- a/java/idea-ui/src/com/intellij/ide/util/importProject/ProjectLayoutPanel.java +++ b/java/idea-ui/src/com/intellij/ide/util/importProject/ProjectLayoutPanel.java @@ -240,15 +240,11 @@ abstract class ProjectLayoutPanel extends JPanel { final Collection sourceRoots = moduleDescriptor.getSourceRoots(); if (sourceRoots.size() > 0) { - builder.append(" ["); - for (Iterator it = sourceRoots.iterator(); it.hasNext();) { - DetectedProjectRoot root = it.next(); - builder.append(root.getDirectory().getName()); - if (it.hasNext()) { - builder.append(","); - } + StringJoiner joiner = new StringJoiner(",", " [", "]"); + for (DetectedProjectRoot root : sourceRoots) { + joiner.add(root.getDirectory().getName()); } - builder.append("]"); + builder.append(joiner); } return builder.toString(); } diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/rangeSet/LongRangeSet.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/rangeSet/LongRangeSet.java index a117e2317ea2..ee15e287a6dd 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/rangeSet/LongRangeSet.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/rangeSet/LongRangeSet.java @@ -2100,12 +2100,10 @@ public abstract class LongRangeSet { @Override public String toString() { - StringBuilder sb = new StringBuilder("{"); + StringJoiner sb = new StringJoiner(", ", "{", "}"); for (int i = 0; i < myRanges.length; i += 2) { - if (i > 0) sb.append(", "); - sb.append(LongRangeSet.toString(myRanges[i], myRanges[i + 1])); + sb.add(LongRangeSet.toString(myRanges[i], myRanges[i + 1])); } - sb.append("}"); return sb.toString(); } } diff --git a/java/java-psi-api/src/com/intellij/psi/PsiIntersectionType.java b/java/java-psi-api/src/com/intellij/psi/PsiIntersectionType.java index 2640e4114118..43f65f0fb890 100644 --- a/java/java-psi-api/src/com/intellij/psi/PsiIntersectionType.java +++ b/java/java-psi-api/src/com/intellij/psi/PsiIntersectionType.java @@ -9,6 +9,7 @@ import com.intellij.psi.util.TypeConversionUtil; import org.jetbrains.annotations.NotNull; import java.util.*; +import java.util.stream.Collectors; /** * Intersection types arise in a process of computing least upper bound. @@ -169,12 +170,7 @@ public class PsiIntersectionType extends PsiType.Stub { @Override public String toString() { - StringBuilder sb = new StringBuilder("PsiIntersectionType: "); - for (int i = 0; i < myConjuncts.length; i++) { - if (i > 0) sb.append(", "); - sb.append(myConjuncts[i].getPresentableText()); - } - return sb.toString(); + return Arrays.stream(myConjuncts).map(PsiType::getPresentableText).collect(Collectors.joining(", ", "PsiIntersectionType: ", "")); } public String getConflictingConjunctsMessage() { diff --git a/java/java-psi-api/src/com/intellij/psi/util/PsiFormatUtil.java b/java/java-psi-api/src/com/intellij/psi/util/PsiFormatUtil.java index 4d607097f7b9..4b54636c4ce5 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/PsiFormatUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/util/PsiFormatUtil.java @@ -10,6 +10,8 @@ import org.intellij.lang.annotations.MagicConstant; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.StringJoiner; + public class PsiFormatUtil extends PsiFormatUtilBase { @MagicConstant(flags = { SHOW_MODIFIERS, SHOW_TYPE, TYPE_AFTER, SHOW_CONTAINING_CLASS, SHOW_FQ_NAME, SHOW_NAME, SHOW_MODIFIERS, @@ -335,19 +337,17 @@ public class PsiFormatUtil extends PsiFormatUtilBase { } private static String formatReferenceList(PsiReferenceList list, int options) { - StringBuilder buffer = new StringBuilder(); + StringJoiner buffer = new StringJoiner(", "); if (BitUtil.isSet(options, SHOW_RAW_TYPE)) { PsiClassType[] types = list.getReferencedTypes(); - for (int i = 0; i < types.length; i++) { - if (i > 0) buffer.append(", "); - buffer.append(formatType(types[i], options, PsiSubstitutor.EMPTY)); + for (PsiClassType type : types) { + buffer.add(formatType(type, options, PsiSubstitutor.EMPTY)); } } else { PsiJavaCodeReferenceElement[] refs = list.getReferenceElements(); - for (int i = 0; i < refs.length; i++) { - if (i > 0) buffer.append(", "); - buffer.append(formatReference(refs[i], options)); + for (PsiJavaCodeReferenceElement ref : refs) { + buffer.add(formatReference(ref, options)); } } return buffer.toString(); diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/light/LightReferenceParameterList.java b/java/java-psi-impl/src/com/intellij/psi/impl/light/LightReferenceParameterList.java index 0e5f1dfee89c..c9beadaf1a36 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/light/LightReferenceParameterList.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/light/LightReferenceParameterList.java @@ -20,6 +20,8 @@ import com.intellij.psi.*; import com.intellij.psi.impl.PsiImplUtil; import org.jetbrains.annotations.NotNull; +import java.util.StringJoiner; + /** * @author dsl */ @@ -35,16 +37,10 @@ public class LightReferenceParameterList extends LightElement implements PsiRefe private String calculateText() { if (myTypeElements.length == 0) return ""; - final StringBuilder buffer = new StringBuilder(); - buffer.append("<"); - for (int i = 0; i < myTypeElements.length; i++) { - PsiTypeElement type = myTypeElements[i]; - if (i > 0) { - buffer.append(","); - } - buffer.append(type.getText()); + final StringJoiner buffer = new StringJoiner(",", "<", ">"); + for (PsiTypeElement type : myTypeElements) { + buffer.add(type.getText()); } - buffer.append(">"); return buffer.toString(); } diff --git a/platform/core-api/src/com/intellij/psi/search/LocalSearchScope.java b/platform/core-api/src/com/intellij/psi/search/LocalSearchScope.java index 14ab5985fc19..c024f607153c 100644 --- a/platform/core-api/src/com/intellij/psi/search/LocalSearchScope.java +++ b/platform/core-api/src/com/intellij/psi/search/LocalSearchScope.java @@ -35,6 +35,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.*; +import java.util.stream.Collectors; public class LocalSearchScope extends SearchScope { private static final Logger LOG = Logger.getInstance("#com.intellij.psi.search.LocalSearchScope"); @@ -198,16 +199,8 @@ public class LocalSearchScope extends SearchScope { @Override public String toString() { - StringBuilder result = new StringBuilder(); - for (int i = 0; i < myScope.length; i++) { - final PsiElement element = myScope[i]; - if (i > 0) { - result.append(","); - } - result.append(element); - } //noinspection HardCodedStringLiteral - return "LocalSearchScope:" + result; + return Arrays.stream(myScope).map(String::valueOf).collect(Collectors.joining(",", "LocalSearchScope:", "")); } @Override diff --git a/platform/lang-api/src/com/intellij/psi/codeStyle/SoftMargins.java b/platform/lang-api/src/com/intellij/psi/codeStyle/SoftMargins.java index a0d58fdfe502..501c9a4c218a 100644 --- a/platform/lang-api/src/com/intellij/psi/codeStyle/SoftMargins.java +++ b/platform/lang-api/src/com/intellij/psi/codeStyle/SoftMargins.java @@ -23,6 +23,7 @@ import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; class SoftMargins implements Cloneable { @@ -39,7 +40,6 @@ class SoftMargins implements Cloneable { if (valueList != null) { String[] values = valueList.split(",\\s*"); myValues = new ArrayList<>(values.length); - int i = 0; for (String value : values) { try { myValues.add(Integer.parseInt(value)); @@ -87,14 +87,10 @@ class SoftMargins implements Cloneable { @Override public String toString() { - StringBuilder sb = new StringBuilder(); - if (myValues != null) { - for (int margin: myValues) { - if (sb.length() > 0) sb.append(","); - sb.append(margin); - } + if (myValues == null) { + return ""; } - return sb.toString(); + return myValues.stream().map(String::valueOf).collect(Collectors.joining(",")); } public void serializeInto(@NotNull Element element) {