集合(list、set、map)的简单升序降序实现
生活随笔
收集整理的這篇文章主要介紹了
集合(list、set、map)的简单升序降序实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這篇博客主要總結一下平時比較常用的幾種集合排序(升序降序)方法。
1.List排序
1)基本數據類型的包裝類集合排序
import com.xxxx.domain.Emp; import org.junit.Test; import org.springframework.boot.test.context.SpringBootTest;import java.util.*;/*** @desc 集合排序* @author gc* @date 2021/5/25 */ @SpringBootTest public class CollectionSortTest {/*** 基本類型包裝類list排序*/@Testpublic void sortList1(){List<Integer> lists = new ArrayList<>(3);lists.add(5);lists.add(1);lists.add(10);//方法1:使用Collections進行排序://升序Collections.sort(lists);//降序Collections.sort(lists,Comparator.reverseOrder());//方法2:使用Java8 Stream進行排序://升序lists = lists.stream().sorted().collect(Collectors.toList());//降序lists = lists.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());for (Integer ele : lists) {System.out.println(ele);}}}2)自定義實體類集合排序:
/*** 實體類list排序*/@Testpublic void sortList2(){List<Emp> lists = new ArrayList<>(3);lists.add(new Emp(3, "員工1"));lists.add(new Emp(1, "員工2"));lists.add(new Emp(2, "員工3"));//方法1:借助Collections排序//升序Collections.sort(lists, Comparator.comparing(Emp::getAge));//降序Collections.sort(lists, Comparator.comparing(Emp::getAge).reversed());//方法2:借助Java8 Stream排序://升序lists = lists.stream().sorted(Comparator.comparing(Emp::getAge)).collect(Collectors.toList());//降序lists = lists.stream().sorted(Comparator.comparing(Emp::getAge).reversed()).collect(Collectors.toList());for (Emp ele : lists) {System.out.println(ele);}}2.Map排序
1)單純根據key排序(用TreeMap實現):
@Testpublic void sortMap1(){//默認升序Map<String, String> map = new TreeMap<>(String::compareTo);//降序//Map<String, String> map = new TreeMap<>(Comparator.reverseOrder());map.put("a","2");map.put("c","5");map.put("d","6");map.put("b","1");map.forEach((k,v)->{System.out.println(k+":"+v);});}2)根據key或value排序:
@Testpublic void sortMap2(){Map map = new HashMap<>();map.put(5, 2);map.put(2, 5);map.put(9,1);List<Map.Entry<Integer, Integer>> mapList = new ArrayList<>(map.entrySet());//根據key默認升序Collections.sort(mapList, Comparator.comparing(Map.Entry::getKey));//根據key降序Collections.sort(mapList, (o1, o2) -> o2.getKey().compareTo(o1.getKey()));//根據value默認升序Collections.sort(mapList, Comparator.comparing(Map.Entry::getValue));//根據value降序Collections.sort(mapList, (o1, o2) -> o2.getValue().compareTo(o1.getValue()));mapList.forEach(o -> System.out.println(o.getKey() + ":" + o.getValue()));//如果一定要返回一個map,就new一個LinkedHashMap,將list中所有值依次put進去就可以/*LinkedHashMap<String,String> linkedHashMap = new LinkedHashMap<>();mapList.forEach(o -> {linkedHashMap.put(o.getKey(), o.getValue());});*/}3.Set排序
網上Set排序的例子很多,不過大部分排序方法是大同小異的,通常最后排序都是依據TreeSet進行排序:
1.基本類型包裝類集合的Set排序:
@Testpublic void sortSet1(){//方法1:使用TreeSet排序//升序TreeSet<Long> sets = new TreeSet<>();//降序TreeSet<Long> reverseSets = new TreeSet<>(Comparator.reverseOrder());sets.add(5L);sets.add(2L);sets.add(19L);//方法2:使用Java8 Stream排序(Set轉為List)://這種排序法的set類型可以是TreeSet,也可以是HashSet//升序List<Long> collect = sets.stream().sorted().collect(Collectors.toList());//降序List<Long> reverseCollect = sets.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());}2.自定義實體類排序:
/*** 按照實體類某些屬性排序*/@Testpublic void sortSet2(){//方法1:使用TreeSet排序//升序TreeSet<Emp> sets = new TreeSet<>(Comparator.comparing(Emp::getAge));sets.add(new Emp(5, "員工1"));sets.add(new Emp(12, "員工2"));sets.add(new Emp(9, "員工3"));//降序TreeSet<Emp> reverseSets = new TreeSet<>(Comparator.comparing(Emp::getAge).reversed());//方法2:使用Java8 Stream排序(轉為list)://這種排序法的set類型可以是TreeSet,也可以是HashSet//升序List<Emp> collect = sets.stream().sorted(Comparator.comparing(Emp::getAge)).collect(Collectors.toList());//降序List<Emp> reverseCollect = sets.stream().sorted(Comparator.comparing(Emp::getAge).reversed()).collect(Collectors.toList());}附上Emp類:
package com.xxxx.domain;import lombok.Data;/*** @desc 員工實體類* @author gc* @date 2021/5/25 */ @Data public class Emp {public Emp(Integer age, String name) {this.age = age;this.name = name;}private Integer age;private String name; }參照的博客:
如何對map進行排序_頑石九變的博客-CSDN博客_map 排序
總結
以上是生活随笔為你收集整理的集合(list、set、map)的简单升序降序实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue前端 数组如何通过时间字段升序降序
- 下一篇: SQL查询即将合同即将到期的员工