Java去除字符串中的重复项

新手上路,请多包涵

我试图遍历一个字符串以删除重复的字符。

例如字符串 aabbccdef 应该变成 abcdef 而字符串 abcdabcd 应该变成 abcd

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

 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);

    }

}

做这个的最好方式是什么?

原文由 Ricco 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 608
2 个回答

将字符串转换为 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());

原文由 Dave 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用 Stream 让这一切变得简单。

 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 的好处很有指导意义。

原文由 Fundhor 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题