如何在Java中删除ArrayList中重复的元素?

x33g5p2x  于2022-10-06 转载在 Java  
字(2.8k)|赞(0)|评价(0)|浏览(808)

正如我们所知,ArrayList允许添加重复的元素。在这篇文章中,我们写一个程序,用不同的方法从ArrayList中删除重复的元素。

我们可以用三种方法编写逻辑,从ArrayList中删除重复的元素。

  1. 使用HashSet
  2. 使用Java 8 lambda Expression
  3. 使用LinkedHashSet(保持顺序)

1. 使用HashSet

我们知道,HashSet类只包含唯一的值,不允许重复的值加入其中。我们只需将ArrayList转换为HashSet。

  1. import java.util.ArrayList;
  2. import java.util.Arrays;
  3. import java.util.HashSet;
  4. import java.util.List;
  5. public class RemoveDuplicatesFromArrayList {
  6. public static void main(final String[] args) {
  7. final List<Integer> listWithDuplicates = new ArrayList<>();
  8. listWithDuplicates.add(10);
  9. listWithDuplicates.add(20);
  10. listWithDuplicates.add(30);
  11. listWithDuplicates.add(30);
  12. listWithDuplicates.add(50);
  13. listWithDuplicates.add(50);
  14. listWithDuplicates.add(10);
  15. System.out.println("Before removing duplicates ::
  16. " + Arrays.toString(listWithDuplicates.toArray()));
  17. final List<Integer> listWithoutDuplicates = new ArrayList<>(
  18. new HashSet<>(listWithDuplicates));
  19. System.out.println("After removing duplicates :: "
  20. + Arrays.toString(listWithoutDuplicates.toArray()));
  21. }
  22. }

输出:

  1. Before removing duplicates :: [10, 20, 30, 30, 50, 50, 10]
  2. After removing duplicates :: [50, 20, 10, 30]

2. 使用Java 8 Lambda表达式

  1. public class RemoveDuplicatesFromArrayList {
  2. public static void main(final String[] args) {
  3. final List<Integer> listWithDuplicates = new ArrayList<>();
  4. listWithDuplicates.add(10);
  5. listWithDuplicates.add(20);
  6. listWithDuplicates.add(30);
  7. listWithDuplicates.add(30);
  8. listWithDuplicates.add(50);
  9. listWithDuplicates.add(50);
  10. listWithDuplicates.add(10);
  11. System.out.println("Before removing duplicates :: "
  12. + Arrays.toString(listWithDuplicates.toArray()));
  13. final List<Integer> listWithoutDuplicates = listWithDuplicates.stream()
  14. .distinct()
  15. .collect(Collectors.toList());
  16. System.out.println("After removing duplicates :: "
  17. + Arrays.toString(listWithoutDuplicates.toArray()));
  18. }
  19. }

输出:

  1. Before removing duplicates :: [10, 20, 30, 30, 50, 50, 10]
  2. After removing duplicates :: [10, 20, 30, 50]
  1. Before removing duplicates :: [10, 20, 30, 30, 50, 50, 10]
  2. After removing duplicates :: [10, 20, 30, 50]

3. 使用LinkedHashSet(保持顺序)

  1. import java.util.ArrayList;
  2. import java.util.Arrays;
  3. import java.util.LinkedHashSet;
  4. import java.util.List;
  5. public class RemoveDuplicatesFromArrayList {
  6. public static void main(final String[] args) {
  7. final List<Integer> listWithDuplicates = new ArrayList<>();
  8. listWithDuplicates.add(10);
  9. listWithDuplicates.add(20);
  10. listWithDuplicates.add(30);
  11. listWithDuplicates.add(30);
  12. listWithDuplicates.add(50);
  13. listWithDuplicates.add(50);
  14. listWithDuplicates.add(10);
  15. System.out.println("Before removing duplicates :: "
  16. + Arrays.toString(listWithDuplicates.toArray()));
  17. final List<Integer> listWithoutDuplicates = new ArrayList<>(
  18. new LinkedHashSet<>(listWithDuplicates));
  19. System.out.println("After removing duplicates :: "
  20. + Arrays.toString(listWithoutDuplicates.toArray()));
  21. }
  22. }

输出

  1. Before removing duplicates :: [10, 20, 30, 30, 50, 50, 10]
  2. After removing duplicates :: [10, 20, 30, 50]

相关文章

最新文章

更多