• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

利用stream sorted进行降序排序

java 搞代码 4年前 (2022-01-09) 25次浏览 已收录 0个评论
文章目录[隐藏]

根据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());
 }
}

结果

3、复杂实体对象pojo排序


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:利用stream sorted进行降序排序

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址