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集合根据对象的属性进行排序的主要内容,如果未能解决你的问题,请参考以下文章
Java集合源码剖析——基于JDK1.8中ConcurrentHashMap的实现原理