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;

  • 相关阅读:
    python scrapy爬取前程无忧招聘信息
    scrf 原理及flask-wtf防护
    Django 惰性机制
    Django 中配置MySQL数据库
    Django的安装命令
    python装饰器
    python面向对象之继承
    OSI七层模型
    面向对象
    python函数
  • 原文地址:https://www.cnblogs.com/sxc1991/p/9504704.html
Copyright © 2011-2022 走看看