java中list集合的几种去重方式
public class ListDistinctExample { public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>() {{ add(1); add(3); add(5); add(2); add(1); add(3); add(7); add(2); }}; System.out.println("原集合:" + list); method(list); } /** * 方法1:contains判断去重(有序) * @param list */ // public static void method(List list){ // List newList = new ArrayList(); // for (Object i : list) { // if(!newList.contains(i)){ // newList.add(i); // } // } // // System.out.println("newList = " + newList); // } /** * 方法2:迭代器去重(无序) * @param list */ // public static void method(List list){ // Iterator iterator = list.iterator(); // while (iterator.hasNext()) { // //获取循环的值 // Object item = iterator.next(); // //如果存在相同的值,看元素第一次出现的下标是否和最后一次出现的下标相同 // if(list.indexOf(item) != list.lastIndexOf(item)){ // //移除最后两个相同的值 // iterator.remove(); // } // } // System.out.println("list = " + list); // } /** * HashSet去重(无序) * @param list */ // public static void method(List list){ // HashSet set = new HashSet(list); // System.out.println("去重后的集合 = " + set); // } /** * LinkedHashSet去重(有序) * @param list */ // public static void method(List list){ // LinkedHashSet<Integer> set = new LinkedHashSet<>(list); // System.out.println("LinkedHashSet去重 = " + set); // } /** * 使用 Stream 去重 * @param list */ public static void method(List<Integer> list) { list = list.stream().distinct().collect(Collectors.toList()); System.out.println("去重集合:" + list); } }