jdk1.7和jdk1.8对list集合根据对象的属性进行排序

Posted 晓*雨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jdk1.7和jdk1.8对list集合根据对象的属性进行排序相关的知识,希望对你有一定的参考价值。

jdk1.8

            List.sort(new Comparator<T>(){
                //重点是这个函数
                @Override
                public int compare(T o1, T o2) {
                    //忽略掉大小写后,进行字符串的比较
                    Double s1 = o1.getWinProbability();
                    Double s2 = o2.getWinProbability();
                    //数字在ADCII中也是按照 排序的
                    return s1.compareTo(s2);//JDK1.8可用
//                    return s2.compareTo(s1);//降序

                }
            });

jdk1.7

Collections.sort(List, new Comparator<T>(){
                //重点是这个函数
                @Override
                public int compare(T o1, T o2) {
                    //忽略掉大小写后,进行字符串的比较
                    Double s1 = o1.getWinProbability();
                    Double s2 = o2.getWinProbability();
                    //数字在ADCII中也是按照 排序的
//                    return s1.compareTo(s2);JDK1.8可用
//                    return s2.compareTo(s1);JDK1.8降序
                    //为了适应JDK1.7
                    return s1.doubleValue() == s2.doubleValue() ? 0 : (s1.doubleValue() > s2.doubleValue() ? 1 : -1);
                }
            });

 

JDK9对集合添加的优化

概述

Java 9,添加了几种集合工厂方法,更方便创建少量元素的集合、map实例。新的List、Set、Map的静态工厂方法可 以更方便地创建集合的不可变实例。
需要注意以下两点:
  • of()方法只是Map,List,Set这三个接口的静态方法,其父类接口和子类实现并没有这类方法,比如 HashSet,ArrayList等待;
  • 返回的集合是不可变的;
package com.itheima.demo04.JDK9;

import java.util.List;
import java.util.Map;
import java.util.Set;

/*
    JDK9的新特性:
        List接口,Set接口,Map接口:里边增加了一个静态的方法of,可以给集合一次性添加多个元素
        static <E> List<E> of?(E... elements)
        使用前提:
            当集合中存储的元素的个数已经确定了,不在改变时使用
     注意:
        1.of方法只适用于List接口,Set接口,Map接口,不适用于接接口的实现类
        2.of方法的返回值是一个不能改变的集合,集合不能再使用add,put方法添加元素,会抛出异常
        3.Set接口和Map接口在调用of方法的时候,不能有重复的元素,否则会抛出异常
 */
public class Demo01JDK9 
    public static void main(String[] args) 
        List<String> list = List.of("a", "b", "a", "c", "d");
        System.out.println(list);//[a, b, a, c, d]
        //list.add("w");//UnsupportedOperationException:不支持操作异常

        //Set<String> set = Set.of("a", "b", "a", "c", "d");//IllegalArgumentException:非法参数异常,有重复的元素
        Set<String> set = Set.of("a", "b", "c", "d");
        System.out.println(set);
        //set.add("w");//UnsupportedOperationException:不支持操作异常

        //Map<String, Integer> map = Map.of("张三", 18, "李四", 19, "王五", 20,"张三",19);////IllegalArgumentException:非法参数异常,有重复的元素
        Map<String, Integer> map = Map.of("张三", 18, "李四", 19, "王五", 20);
        System.out.println(map);//王五=20, 李四=19, 张三=18
        //map.put("赵四",30);//UnsupportedOperationException:不支持操作异常
    

 

以上是关于jdk1.7和jdk1.8对list集合根据对象的属性进行排序的主要内容,如果未能解决你的问题,请参考以下文章

JDK1.7与JDK1.8的区别,你知道了吗

JDK1.7与JDK1.8的区别,你知道了吗

Java 集合框架—— HashMap

Java集合源码剖析——基于JDK1.8中ConcurrentHashMap的实现原理

Java集合源码剖析——基于JDK1.8中ConcurrentHashMap的实现原理

Java集合源码剖析——基于JDK1.8中ConcurrentHashMap的实现原理