• List去除重复元素


     1 import java.util.*;
     2 import java.util.stream.Collectors;
     3 
     4 public class ListDistinct {
     5     public static void main(String[] args) {
     6 
     7         List<Integer> list1 = Arrays.asList(1, 2, 3, 3, 4, 2, 6, 3, 7, 6);
     8         ArrayList<Integer> list = new ArrayList<>(list1);
     9 
    10         List distinct = distinct3(list);
    11         for (Object o : distinct) {
    12             System.out.print(o + " ");
    13         }
    14     }
    15     //双重循环遍历list,去除重复值
    16     public static List distinct1(List list){
    17         for (int i = 0; i < list.size()-1; i++) {//每次拿第i个元素
    18             for (int j = list.size()-1; j > i ; j--) {//从最后一个元素开始往前比较
    19                 if (list.get(j).equals(list.get(i))){//删除相同元素
    20                     list.remove(j);
    21                 }
    22             }
    23         }
    24         return list;
    25     }
    26 
    27     //通过Set的不重复特性去除重复元素
    28     public static List distinct2(List list){
    29         HashSet set = new HashSet<>(list);
    30         list.clear();//删除之前所有元素
    31         list.addAll(set);//搬运set中的所有元素
    32         return list;
    33     }
    34 
    35     //去重顺序不乱
    36     public static List distinct3(List list){
    37         HashSet set = new HashSet<>();
    38         List<Object> newList = new ArrayList<>();
    39         Iterator iterator = list.iterator();//用迭代器遍历
    40         while (iterator.hasNext()){
    41             Object element = iterator.next();
    42             if (set.add(element)){//如果set添加了这个元素新列表也添加进去,set 的add()源码解释如下图
    43                 newList.add(element);
    44             }
    45         }
    46         list.clear();
    47         list.addAll(newList);
    48 
    49         return list;
    50     }
    51     //把list里的对象遍历一遍,用list.contains(),如果不存在就放入到另外一个list集合中
    52     public static List distinct4(List list){
    53         List<Object> newList = new ArrayList<>();
    54         for (int i = 0; i < list.size()-1; i++) {
    55             if (!newList.contains(list.get(i))){
    56                 newList.add(list.get(i));
    57             }
    58         }
    59         list.clear();
    60         list.addAll(newList);
    61         return list;
    62     }
    63 
    64     //用jdk1.8新特性stream
    65     public static List distinct5(List list){
    66         return  (List) list.stream().distinct().collect(Collectors.toList());
    67 
    68     }
    69 
    70 }

  • 相关阅读:
    LeetCode | Contains Duplicate III
    LeetCode | Contains Duplicate II
    LeetCode | Contains Duplicate
    LeetCode | Find Minimum in Rotated Sorted Array II
    CentOS下使用yum快速安装memcached
    centos6.5安装Apache+MySQL+PHP
    centos 防火墙开放80端口
    jeecms搜索结果排序-二次开发
    JS常用的标准函数
    spring download
  • 原文地址:https://www.cnblogs.com/xpybsh/p/14955177.html
Copyright © 2020-2023  润新知