Java中List去重

爱被打了一巴掌 2022-09-08 03:53 235阅读 0赞
  1. import java.util.ArrayList;
  2. import java.util.HashSet;
  3. import java.util.Iterator;
  4. import java.util.List;
  5. import java.util.Set;
  6. import java.util.stream.Collectors;
  7. public class Test {
  8. public static void main(String[] args) {
  9. List<String> list = new ArrayList<String>();
  10. list.add("1001A410000000PS6PI3");
  11. list.add("1001A410000000PS6WK7");
  12. list.add("1001A410000000PS6PI3");
  13. list.add("1001A410000000PS6W77");
  14. System.out.println(removeDuplicate1(list));
  15. // System.out.println(removeDuplicate2(list));
  16. // System.out.println(removeDuplicate3(list));
  17. // System.out.println(removeDuplicate4(list));
  18. // System.out.println(removeDuplicate5(list));
  19. }
  20. /**
  21. * 方法一: Stream 去重:list.stream().distinct()
  22. * @param list
  23. * @return
  24. */
  25. private static List<String> removeDuplicate1(List<String> list) {
  26. List<String> newList = (List) list.stream().distinct().collect(Collectors.toList());
  27. return newList;
  28. }
  29. /**
  30. * 方法二:通过 HashSet 剔除重复元素(会改变原有顺序)
  31. * @param list
  32. * @return
  33. */
  34. private static List<String> removeDuplicate2(List<String> list) {
  35. Set<String> tempSet = new HashSet<String>(list);
  36. list.clear();
  37. list.addAll(tempSet);
  38. return list;
  39. }
  40. /**
  41. * 方法三:删除 ArrayList 中重复元素,保持顺序
  42. * @param list
  43. * @return
  44. */
  45. private static List<String> removeDuplicate3(List<String> list) {
  46. Set<String> tempSet = new HashSet<String>();
  47. List<String> newList = new ArrayList<>();
  48. for (Iterator iter = list.iterator(); iter.hasNext(); ) {
  49. String next = (String) iter.next();
  50. if (tempSet.add(next)) {
  51. newList.add(next);
  52. }
  53. }
  54. return newList;
  55. }
  56. /**
  57. * 方法四:遍历 list,用 tempList.contain(),不存在 add
  58. * @param list
  59. * @return
  60. */
  61. private static List<String> removeDuplicate4(List<String> list) {
  62. List<String> tempList = new ArrayList<>();
  63. for (int i = 0; i < list.size(); i++) {
  64. if (!tempList.contains(list.get(i))) {
  65. tempList.add(list.get(i));
  66. }
  67. }
  68. return tempList;
  69. }
  70. /**
  71. * 方法五:循环 list 中的所有元素然后删除重复(会改变原有顺序)
  72. * @param list
  73. * @return
  74. */
  75. private static List<String> removeDuplicate5(List<String> list) {
  76. for (int i = 0; i < list.size(); i++) {
  77. for (int j = list.size() - 1; j > i; j--) {
  78. if (list.get(i).equals(list.get(j))) {
  79. list.remove(list.get(i));
  80. }
  81. }
  82. }
  83. return list;
  84. }
  85. }

发表评论

表情:
评论列表 (有 0 条评论,235人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JavaList

    Java中List去重的方法有很多种,下面介绍几种常用的方法。 1. 使用Set去重Set是Java中的一个集合类,它的特点是不允许重复元素。我们可以利用这个特点来去重。具

    相关 List

    在日常工作中,需要对 List 进行去重的场景很多。对于我这样一个菜鸟来说,可能能想到的最简单粗暴的方法就是双层循环去重,但是在看到这篇文章之后,果断收藏了。 [https:

    相关 List

    我们知道List允许有相同的元素,那么我们怎么通过方法来让它去重呐, 我们都会想到Set集合,Set集合是不允许有相同的元素的,所以我们可以借助Set集合,把重复的元素去掉

    相关 List

      list中数据的去重,通常使用将list转换为set,简单直接,因为set集合的特点就是没有重复的元素。需要考虑一下两种情况: 1.List集合中的数据类型是基本数据

    相关 List

    思路:   1、先将list转换成HashSet   2、将HashSet再转换成List 源码如下: List<A> list = new ArrayList