list去重 转载

时间:2023-02-15 15:53:09

http://blog.csdn.net/huaishuming/article/details/47778319

1. 单个List 去重:

如果用的是Set集合就不用怕重复的问题了,如果用的List就要想办法将它变为Set

  1. package com;
  2. import java.util.ArrayList;
  3. import java.util.HashSet;
  4. import java.util.List;
  5. public class Test4 {
  6. /**
  7. * @param args
  8. */
  9. public static void main(String[] args) {
  10. // TODO Auto-generated method stub
  11. List<String> l1 = new ArrayList<String>();
  12. l1.add("a");
  13. l1.add("b");
  14. l1.add("c");
  15. l1.add("e");
  16. l1.add("e");
  17. l1.add("e");
  18. l1.add("e");
  19. l1.add("a");
  20. List<String> listWithoutDup = new ArrayList<String>(new HashSet<String>(l1));
  21. for(String str : listWithoutDup){
  22. System.out.println(str);
  23. }
  24. }
  25. }

2. 2个集合合并后去重:

  1. package com;
  2. import java.util.ArrayList;
  3. import java.util.HashSet;
  4. import java.util.List;
  5. public class Test3 {
  6. /**
  7. * @param args
  8. */
  9. public static void main(String[] args) {
  10. // TODO Auto-generated method stub
  11. List<String> l1 = new ArrayList<String>();
  12. l1.add("a");
  13. l1.add("a");
  14. l1.add("c");
  15. l1.add("c");
  16. List<String> l2 = new ArrayList<String>();
  17. l2.add("b");
  18. l2.add("b");
  19. l2.add("k");
  20. l2.add("k");
  21. l1.removeAll(l2);//此处指的是将与l2重复的删除
  22. l1.addAll(l2);//此处指加上l2
  23. //如果保证l1,和l2  2个各自的LIST 本身不重复,此行代码不用写。否则会出现合并后LIST重复的问题,具体看业务需要
  24. l1 = new ArrayList<String>(new HashSet<>(l1));
  25. for(String str : l1){
  26. System.out.println(str);
  27. }
  28. }
  29. }

结果:

b
c
a
k

如果没有

  1. l1 = new ArrayList<String>(new HashSet<>(l1));
    1. 则结果为:a
    2. a
    3. c
    4. c
    5. b
    6. b
    7. k
    8. k