最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用stream sorted進(jìn)行降序排序

 更新時(shí)間:2021年03月02日 10:39:48   作者:banjw  
這篇文章主要介紹了利用stream sorted進(jìn)行降序排序,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

根據(jù)value值的大小進(jìn)行降序排序,并進(jìn)行截取。

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("原始數(shù)據(jù):"+list);
  //根據(jù)value進(jìn)行排序 得到升序排列
  list.sort(Comparator.comparing(h -> ConvertUtil.obj2Integer(h.get("value"))));
  //顛倒排序,變?yōu)榻敌蚺帕?
  Collections.reverse(list);
  //截取前3個(gè)
  System.out.println("結(jié)果"+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個(gè)
    .limit(3)
    //終止流
    .collect(Collectors.toList());
 System.out.println("流結(jié)果"+result );

運(yùn)行結(jié)果:

原始數(shù)據(jù):

[{id=1, value=20}, {id=2, value=80}, {id=3, value=21}, {id=4, value=28}]

結(jié)果

[{id=2, value=80}, {id=4, value=28}, {id=3, value=21}]

補(bǔ)充:Java8Stream流的sorted()排序===使用Comparator排序

sorted()方法排序,一個(gè)是Comparable(自然排序),一個(gè)是Comparator接口,像Integer、String等這些基本類型的包裝類已經(jīng)實(shí)現(xiàn)了Comparable接口,

Comparable接口======》java.lang包下的

方法CompareTo(Object o),除了基本類型包裝類外,一些常用的pojo類要使用CompareTo(Object o)排序,就要實(shí)現(xiàn)Comparable接口,在pojo類里重寫compareTo()方法

Comparator接口======》java.util包下的

方法compare(Object a,Object b)

關(guān)于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) {
  List<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()); //自然排序
 }
}

結(jié)果

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

結(jié)果

3、復(fù)雜實(shí)體對(duì)象pojo排序

使用Comparator排序

Person.java

package com.it.pojo; 
import java.util.Comparator;
import java.util.Objects; 
@Data
@NoArgsConstructor
@ToString
public class Person {
 private String name;
 private Integer age;
}
 

test.java===>先只根據(jù)年齡排序,后先根據(jù)年齡排序,再根據(jù)姓名排序,都升序

package com.it.test;
import java.util.ArrayList; 
import java.util.List;
import com.it.pojo.Person; 
import java.util.Comparator;
import java.util.stream.Collectors; 
public class StreamTest {
 public static void main(String[] args) {
  Person person1 = new Person();
  person1.setAge(21);
  person1.setName("21");
 
  Person person2 = new Person();
  person2.setAge(19);
  person2.setName("19");
 
  Person person3 = new Person();
  person3.setAge(19);
  person3.setName("20");
 
  Person person4 = new Person();
  person4.setAge(20);
  person4.setName("20");
 
  Person person5 = new Person();
  person5.setAge(19);
  person5.setName("18");
  
  List<Person> people = new ArrayList<>();
  people.add(person1);
  people.add(person2);
  people.add(person3);
  people.add(person4);
  people.add(person5);
  
  List<Person> collect1 = people.stream().sorted((Comparator.comparing(Person::getAge))).collect(Collectors.toList());//只根據(jù)年齡排序,升序
  System.out.println(collect2);
  
   List<Person> collect2 = people.stream().sorted((Comparator.comparing(Person::getAge)).reversed()).collect(Collectors.toList());//只根據(jù)年齡排序,降序
  System.out.println(collect2);
  
  List<Person> collect3 = people.stream().sorted((Comparator.comparing(Person::getAge)).thenComparing(Comparator.comparing(Person::getName))).collect(Collectors.toList());//先根據(jù)年齡進(jìn)行排序,遇見相同的,然后根據(jù)姓名進(jìn)行排序,都升序
  System.out.println(collect3);
 
   List<Person> collect4 = people.stream().sorted((Comparator.comparing(Person::getAge)).thenComparing(Comparator.comparing(Person::getName)).reversed()).collect(Collectors.toList());/先根據(jù)年齡進(jìn)行排序,遇見相同的,然后根據(jù)姓名進(jìn)行排序,降序【都降序】
  System.out.println(collect4);
 
  List<Person> collect5 = people.stream().sorted(Comparator.comparing(Person::getAge).reversed().thenComparing(Comparator.comparing(Person::getName)).reversed()).collect(Collectors.toList());//年齡升序,姓名降序
  System.out.println(collect5);
  
  List<Person> collect6 = people.stream().sorted(Comparator.comparing(Person::getAge).reversed().thenComparing(Comparator.comparing(Person::getName))).collect(Collectors.toList());//根據(jù)年齡降序,姓名升序
  System.out.println(collect6);
 }
}

結(jié)果

只根據(jù)年齡進(jìn)行排序的,默認(rèn)是升序

根據(jù)年齡降序

先根據(jù)年齡,后根據(jù)姓名排序的,默認(rèn)都是升序

根據(jù)年齡和性別,先根據(jù)年齡,年齡相同根據(jù)性別,只在最后一個(gè)comparing上寫reversed,兩個(gè)排序都是降序【根據(jù)年齡降序,姓名降序】

根據(jù)年齡升序,年齡相同,根據(jù)姓名降序

總結(jié)

先這么著吧

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • 淺析JDBC的使用方法

    淺析JDBC的使用方法

    這篇文章主要介紹了JDBC的使用方法,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下
    2020-08-08
  • Java 使用json-lib處理JSON詳解及實(shí)例代碼

    Java 使用json-lib處理JSON詳解及實(shí)例代碼

    這篇文章主要介紹了Java 使用json-lib處理JSON詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • java生成指定范圍的隨機(jī)日期

    java生成指定范圍的隨機(jī)日期

    這篇文章主要為大家詳細(xì)介紹了java生成指定范圍的隨機(jī)日期,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • java教程之java程序編譯運(yùn)行圖解(java程序運(yùn)行)

    java教程之java程序編譯運(yùn)行圖解(java程序運(yùn)行)

    最近重新復(fù)習(xí)了一下java基礎(chǔ),在使用javap的過程中遇到了一些問題,這里便講講對(duì)于一個(gè)類文件如何編譯、運(yùn)行、反編譯的。也讓自己加深一下印象
    2014-03-03
  • java異步執(zhí)行代碼處理方法(先返回結(jié)果,后執(zhí)行代碼)

    java異步執(zhí)行代碼處理方法(先返回結(jié)果,后執(zhí)行代碼)

    這篇文章主要給大家介紹了關(guān)于java異步執(zhí)行代碼處理方法的相關(guān)資料,先返回結(jié)果,后執(zhí)行代碼,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Java實(shí)現(xiàn)超簡單抖音去水印的示例詳解

    Java實(shí)現(xiàn)超簡單抖音去水印的示例詳解

    抖音去水印方法很簡單,以前一直沒有去研究,以為搞個(gè)去水印還要用到算法去除,直到動(dòng)手的時(shí)候才發(fā)現(xiàn)這么簡單,不用編程基礎(chǔ)都能做。所以本文將介紹一個(gè)超簡單抖音視頻去水印方法,需要的可以參考一下
    2022-03-03
  • java高并發(fā)ThreadPoolExecutor類解析線程池執(zhí)行流程

    java高并發(fā)ThreadPoolExecutor類解析線程池執(zhí)行流程

    這篇文章主要為大家介紹了java高并發(fā)ThreadPoolExecutor類解析線程池執(zhí)行流程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • java計(jì)算π的多種方法

    java計(jì)算π的多種方法

    這篇文章主要介紹了使用java計(jì)算π的多種方法,代碼詳細(xì),邏輯清晰,對(duì)于算法思路可能有所幫助,需要的朋友可以參考下
    2021-04-04
  • spring mvc 實(shí)現(xiàn)獲取后端傳遞的值操作示例

    spring mvc 實(shí)現(xiàn)獲取后端傳遞的值操作示例

    這篇文章主要介紹了spring mvc 實(shí)現(xiàn)獲取后端傳遞的值操作,結(jié)合實(shí)例形式詳細(xì)分析了spring mvc使用JSTL 方法獲取后端傳遞的值相關(guān)操作技巧
    2019-11-11
  • Spring Boot Actuator執(zhí)行器運(yùn)行原理詳解

    Spring Boot Actuator執(zhí)行器運(yùn)行原理詳解

    這篇文章主要介紹了Spring Boot Actuator執(zhí)行器運(yùn)行原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論

疏勒县| 金溪县| 双鸭山市| 永州市| 宣城市| 临安市| 岳普湖县| 军事| 广水市| 鄂托克旗| 南安市| 正阳县| 佳木斯市| 梓潼县| 读书| 林周县| 西林县| 大冶市| 亳州市| 苏尼特右旗| 霍山县| 桂平市| 长丰县| 额济纳旗| 阿坝| 岚皋县| 茌平县| 伊川县| 义马市| 平潭县| 陕西省| 喀喇| 从化市| 三穗县| 太原市| 上栗县| 咸丰县| 茂名市| 湄潭县| 井研县| 宾阳县|