在 Java 中从字符串中删除重复项

2022-09-01 14:52:49

我正在尝试循环访问字符串以删除重复的字符。

例如,字符串应该变为,字符串应变为aabbccdefabcdefabcdabcdabcd

以下是我到目前为止所拥有的:

public class test {

    public static void main(String[] args) {

        String input = new String("abbc");
        String output = new String();

        for (int i = 0; i < input.length(); i++) {
            for (int j = 0; j < output.length(); j++) {
                if (input.charAt(i) != output.charAt(j)) {
                    output = output + input.charAt(i);
                }
            }
        }

        System.out.println(output);

    }

}

最好的方法是什么?


答案 1

将字符串转换为 char 数组,并将其存储在 .这将保留您的订购,并删除重复项。像这样:LinkedHashSet

String string = "aabbccdefatafaz";

char[] chars = string.toCharArray();
Set<Character> charSet = new LinkedHashSet<Character>();
for (char c : chars) {
    charSet.add(c);
}

StringBuilder sb = new StringBuilder();
for (Character character : charSet) {
    sb.append(character);
}
System.out.println(sb.toString());

答案 2

使用可以轻松实现。

noDuplicates = Arrays.asList(myString.split(""))
                     .stream()
                     .distinct()
                     .collect(Collectors.joining());

以下是有关Stream的更多文档以及您可以使用它执行的所有操作:https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html

“描述”部分对Streams的好处非常有启发性。