List去重记录一下

431 阅读1分钟

java开发中,常常会使用的到ArrayList,关于ArrayList的去重,某记录一下:

1、使用linkedHashSet进行去重。

自我感觉最好的一种方式: 不仅删除重复数据;还可以保证添加的顺序。

废话不多说,上代码:

 public static void main(String[] args) {

    ArrayList<Integer> numberList= new ArrayList<Integer>(Arrays.asList(1,1,2,3,3,4,4,4,5,6,6,7,7,8,8,9,9,9));
    System.out.println(numberList);

    LinkedHashSet hashSet = new LinkedHashSet(numberList);

    ArrayList<Integer> list= new ArrayList<>(hashSet);

    System.out.println(list);
}

执行结果:

image.png

2、使用java8 Stream流。

public static void main(String[] args) {

    ArrayList<Integer> numberList= new ArrayList<Integer>(Arrays.asList(1,1,2,3,3,4,4,4,5,6,6,7,7,8,8,9,9,9));
    System.out.println(numberList);

    List<Integer> list = numberList.stream().distinct().collect(Collectors.toList());

    System.out.println(list);
}

执行结果:

image.png

3、使用HashSet进行去重。

HashSet不保证数据的顺序。

public static void main(String[] args) {

    ArrayList<Integer> list= new ArrayList<Integer>(Arrays.asList(1,1,2,3,3,4,4,4,5,6,6,7,7,8,8,9,9,9));
    System.out.println(list);

    HashSet<Integer> set = new HashSet<Integer>(list.size());
    List<Integer> result = new ArrayList<Integer>(list.size());
    for (Integer str : list) {
        if (set.add(str)) {
            result.add(str);
        }
    }
    list.clear();
    list.addAll(result);

    System.out.println(list);
}

执行结果:

image.png

4、使用api,contains方法。

 public static void main(String[] args) {

    ArrayList<Integer> list= new ArrayList<Integer>(Arrays.asList(1,1,2,3,3,4,4,4,5,6,6,7,7,8,8,9,9,9));
    
    System.out.println(list);
    List<Integer> result = new ArrayList<Integer>(list.size());
    for (Integer str : list) {
        if (!result.contains(str)) {
            result.add(str);
        }
    }
    list.clear();
    list.addAll(result);
    System.out.println(list);
}

执行结果:

image.png

5、双重for循环。

public static void main(String[] args) {

    ArrayList<Integer> list= new ArrayList<Integer>(Arrays.asList(1,1,2,3,3,4,4,4,5,6,6,7,7,8,8,9,9,9));

    System.out.println(list);
    for (int i = 0; i < list.size(); i++) {
        for (int j = 0; j < list.size(); j++) {
            if (i != j && list.get(i) == list.get(j)) {
                list.remove(list.get(j));
            }
        }
    }
    System.out.println(list);
}

执行结果:

image.png