zoukankan      html  css  js  c++  java
  • ArrayList去重及排序

    List去重

    方法1:set集合去重,不打乱顺序

    List<String> list = new ArrayList<String>();
    list.add("aaa");
    list.add("bbb");
    list.add("aaa");
    list.add("aba");
    list.add("aaa");
    
    Set<String> set = new HashSet<String>();
    List<String> newList = new ArrayList<String>();
    for (String s: list) {
        if (set.add(s)) {
            newList.add(s);
        }
    }
    System.out.println("去重后的集合: " + newList);

    方法2:遍历后判断赋给另一个list集合

    List<String> newList = new ArrayList<String>();
    for (String s : list) {
        if (!newList.contains(s)) {
            newList.add(s);
        }
    }
    System.out.println("去重后的集合: " + newList);

    方法3:set去重

    Set<String> set = new HashSet<String>();
    List<String> newList = new ArrayList<String>();
    set.addAll(list);
    newList.addAll(set);
    System.out.println("去重后的集合: " + newList);

    方法4:set去重(代码缩减为一行)

    List<String> newList = new ArrayList<String>(new HashSet<String>(list));
    System.out.println("去重后的集合: " + newList);

    方法5:用JDK1.8 Stream中对List进行去重:list.stream().distinct();

            List<String> a = new ArrayList<> ();
            a.add("a");
            a.add("b");
            a.add("b");
            List list=(List) a.stream().distinct().collect(Collectors.toList());
            System.out.println(list);    

    List排序

    使用Collections工具类的sort(List<T> list, Comparator<? super T> c)方法对List集合进行自定义排序

        @Test
        public void listCustomSort() {
            List<Person> list = new ArrayList<Person>();
            Person p1 = new Person("1", "p1" , 12);
            Person p2 = new Person("2", "p2" , 9);
            Person p3 = new Person("3", "p3" , 13);
            Person p4 = new Person("4", "p4" , 9);
            list.add(p1);
            list.add(p2);
            list.add(p3);
            list.add(p4);
            
            System.out.println(list);
            System.out.println("------------------");
            
            Collections.sort(list, new Comparator<Person>() {
                // 按年龄从大到小排序;
                //compareto就是比较两个数据的大小关系 大于0表示前一个数据比后一个数据大, 0表示相等,小于0表示第一个数据小于第二个数
                @Override
                public int compare(Person p1, Person p2) {
                    return p1.getAge() == p2.getAge() ? 0 : (p1.getAge() < p2.getAge() ? 1 : -1);
                }
                
            });
            
            System.out.println(list);
        }
    

      

    我话讲完!谁赞成?谁反对?
  • 相关阅读:
    JS提取子字符串函数比较
    js事件定义方式和获取事件对象event总结
    让body的clientHeight与html的clientHeight相等的方法
    关于原型链和继承问题的思考:为什么不能直接把父类的prototype赋值给子类的prototype
    [javascript权威指南笔记02]Throw语句和异常处理机制try/catch/finally
    转载:javascript语句标签
    转:JS中强大的正则表达式
    分享我常用的Javascript工具函数
    对prototype,instanceof和constrctor的理解
    xml基础知识总结和回顾
  • 原文地址:https://www.cnblogs.com/wffzk/p/13177777.html
Copyright © 2011-2022 走看看