文章目录[隐藏]
根据value值的大小进行降序排序,并进行截取。
public static void main(String[] args) { List<Map<String, Object>> list = Lists.newArrayList(); Map<String, Object> map = Maps.newHashMap(); map.put("id", 1); map.put("value", 20); list.add(map); map = Maps.newHashMap(); map.put("id", 2); map.put("value", 80); list.add(map); map = Maps.newHashMap(); map.put("id", 3); map.put("value", 21); list.add(map); map = Maps.newHashMap(); map.put("id", 4); map.put("value", 28); list.add(map); System.out.println("原始数据:"+list); //根据value进行排序 得到升序排列 list.sort(Comparator.comparing(h -> ConvertUtil.obj2Integer(h.get("value")))); //颠倒排序,变为降序排列 Collections.reverse(list); //截取前3个 System.out.println("结果"+list.subList(0, 3)); }
使用1.8 stream处理
List<Map<String, Object>>result = list.stream().sorted((h1, h2) -> //降序 ConvertUtil.obj2Integer(h2.get("value")).compareTo(ConvertUtil .obj2Integer(h1.get("value")))) //前3个 .limit(3) //终止流 .collect(Collectors.toList()); System.out.println("流结果"+result );
运行结果:
原始数据:
[{id=1, value=20}, {id=2, value=80}, {id=3, value=21}, {id=4, value=28}]
结果
[{id=2, value=80}, {id=4, value=28}, {id=3, value=21}]
补充:Java8Stream流的sorted()排序===使用Comparator排序
sorted()方法排序,一个是Comparable(自然排序),一个是Comparator接口,像Integer、String等这些基本类型的包装类已经实现了Comparable接口,
Comparable接口======》java.lang包下的
方法CompareTo(Object o),除了基本类型包装类外,一些常用的pojo类要使用CompareTo(Object o)排序,就要实现Comparable接口,在pojo类里重写compareTo()方法
Comparator接口======》java.util包下的
方法compare(Object a,Object b)
关于Comparable和Comparator接口
Sorted排序一共有两种,自然排序和Comparator接口的排序,
使用sorted()排序
1、简单List<Integer> 排序=====》
package com.it.test; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; public class StreamTest { public static void main(String[] args) { L<strong style="color:transparent">本文来源gaodai#ma#com搞@@代~&码*网/</strong>ist<Integer> integers = new ArrayList<>(); integers.add(9); integers.add(2); integers.add(0); integers.add(4); integers.add(8); List<Integer> collect = integers.stream().sorted().collect(Collectors.toList()); //自然排序 } }
结果
2、简单List<String>排序
package com.it.test; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; public class StreamTest { public static void main(String[] args) { List<String> strings = new ArrayList<>(); strings.add("aa"); strings.add("b"); strings.add("aac"); strings.add("bb"); strings.add("abb"); List<String> collect1 = strings.stream().sorted().collect(Collectors.toList()); System.out.println(collect1.toString()); } }
结果