如何从Java中的LinkedList或String中删除重复的字母?

时间:2017-11-03 15:13:04

标签: java

嘿伙计们,我一直无法从字符串中删除重复的字母。我已尝试使用字符串方法循环,​​但我没有看到任何地方。有谁知道如何从链表或字符串中删除重复的字母。我有一个发送的字符串,其中包含一个字符串。我还有一个LinkedList word = new Linked List();它有相同的字母。

2 个答案:

答案 0 :(得分:0)

利用LinkedHashSet的属性,保证其元素之间的唯一性保留顺序:

String string = "foobar";
Set<Character> uniqueChars = new LinkedHashSet<>();
for (char character : string.toCharArray()) {
    uniqueChars.add(character );
}
uniqueChars.forEach(character -> System.out.print(character)); // fobar

更高级的替代方案是使用Java 8 Stream API,它将实现相同的目标:

String string = "foobar";
LinkedHashSet<Character> uniqueChars = string.chars()
        .mapToObj(character -> (char) character )
        .collect(Collectors.toCollection(LinkedHashSet::new));
uniqueChars.forEach(character -> System.out.print(character)); //fobar

答案 1 :(得分:0)

有两种方法可以实现相同的目标,如下所示:

  1. 尝试将值放入SET

    new HashSet<>(listWithDuplicates)

  2. 使用番石榴也可以这样做:

    Lists.newArrayList(Sets.newHashSet(listWithDuplicates));

  3. 最后 - 让我们看一下在Java 8中使用Lambdas的新解决方案;我们将使用Stream API中的distinct()方法,该方法根据equals()方法返回的结果返回由不同元素组成的流:

  4. listWithDuplicates.stream() .distinct() .collect(Collectors.toList());

    请告诉我它是否有帮助..

    有关Stream api的详细信息和示例,请点击以下网址:

    https://kpblogs.com/java/java8/java-stream-api-with-example/