zoukankan      html  css  js  c++  java
  • Java中如何去除List中的重复的值?

    复制代码
    package com.test;
    
    import java.util.*;
    
    public class Test {
    
        /**
         AAAA AAAA BBBB BBBB CCCC CCCC CCCC CCCC
         */
        public static void main(String[] args) {
            List<String> list = new ArrayList<String>();
            list.add("AAAA");
            list.add("AAAA");
            list.add("AAAA");
            list.add("BBBB");
            list.add("BBBB");
            list.add("BBBB");
            list.add("CCCC");
            list.add("CCCC");
            list.add("CCCC");
            list.add("DDDD");
    
            new Test().removeDuplicateWithOrder(list);
    //      System.out.println(list);
        }
    
        // 删除ArrayList中重复元素
        public static void removeDuplicate(List list) {
            for (int i = 0; i < list.size() - 1; i++) {
                for (int j = list.size() - 1; j > i; j--) {
                    if (list.get(j).equals(list.get(i))) {
                        list.remove(j);
                    }
                }
            }
            System.out.println(list);
        }
    
        // 方法二:通过HashSet剔除
        // 删除ArrayList中重复元素,add进去顺序就变了不考虑顺序的话可以使用
        public static void removeDuplicate1(List list) {
            HashSet h = new HashSet(list);
            list.clear();
            list.addAll(h);
            System.out.println(list);
        }
    
        // 方法三: 删除ArrayList中重复元素,保持顺序
        // 删除ArrayList中重复元素,保持顺序
        public static void removeDuplicateWithOrder(List list) {
            Set set = new HashSet();
            List newList = new ArrayList();
            for (Iterator iter = list.iterator(); iter.hasNext();) {
                Object element = iter.next();
                if (set.add(element))
                    newList.add(element);
            }
            list.clear();
            list.addAll(newList);
            System.out.println(" remove duplicate " + list);
        }
    }
    复制代码

    还有两种较简单的,思想都是一样的,而且顺序也会保持的:

    复制代码
    public class Test {
        public static void main(String[] args) {
            ArrayList<String> arr = new ArrayList<String>();
            arr.add("aaa");
            arr.add("bbb");
            arr.add("bbb");
            arr.add("aaa");
            arr.add("ccc");
            arr.add("ccc");
    
            List<String> newList = getNewList(arr);
            System.out.println(newList);
            
    //        getlist(arr);
        }
        
        public static  List <String> getNewList(List<String> li){
            List<String> list = new ArrayList<String>();//创建新的list
            for(int i=0; i<li.size(); i++){
                String str = li.get(i);  //获取传入集合对象的每一个元素
                if(!list.contains(str)){   //查看新集合中是否有指定的元素,如果没有则加入
                    list.add(str);
                }
            }
            return list;  //返回集合
        }
        
        public static void getlist(List<String> arr) {
            ArrayList<String> result = new ArrayList<String>();
            for (Object s : arr) {
                if (Collections.frequency(result, s)<1)
                    result.add((String) s);
            }
            System.out.println(result);
        }
    }
    复制代码

    针对方法getList的小说明:

    frequency(Collection<?>, Object) 方法用于获取所指定元素集合collection等于指定对象object中的数量。

    if (Collections.frequency(result, s)<1)
                    result.add((String) s);

    的意思是如果对象s在集合result中出现的次数小于1(无s元素),就将它添加进入集合result;

  • 相关阅读:
    二进制位运算
    Leetcode 373. Find K Pairs with Smallest Sums
    priority_queue的用法
    Leetcode 110. Balanced Binary Tree
    Leetcode 104. Maximum Depth of Binary Tree
    Leetcode 111. Minimum Depth of Binary Tree
    Leetcode 64. Minimum Path Sum
    Leetcode 63. Unique Paths II
    经典的递归练习
    案例:java中的基本排序
  • 原文地址:https://www.cnblogs.com/sxc1991/p/9504704.html
Copyright © 2011-2022 走看看