首页 > 其他分享 > list数据实现先分组后排序

list数据实现先分组后排序

时间:2023-07-19 14:13:33浏览次数:40  
标签:name grade 三年级 list 分组 User sorted 排序 id

使用jdk8的stream流(基本实现分组靠Collectors.goupingby),list自带的sort()方法排序,话不多说,代码如下:

  1.   List<User> list = Arrays.asList(new User("1","小明","2","一年级"),
  2.   new User("2","小名","1","一年级"),
  3.   new User("3","小刘","1","二年级"),
  4.   new User("4","小亮","2","二年级"),
  5.   new User("5","小项","3","三年级"),
  6.   new User("6","小项","4","三年级"));
  7.   Map<String, List<User>> collect = list.stream().collect(Collectors.groupingBy(User::getGrade));
  8.   System.out.println("排序前已完成分组: ");
  9.   System.out.println(collect.toString());
  10.   collect.values().forEach(item -> {
  11.   item.sort((o1, o2) -> Integer.parseInt(o1.getSorted()) - Integer.parseInt(o2.getSorted()));
  12.   });
  13.   System.out.println("排序后:");
  14.   System.out.println(collect.toString());

输出结果如下

  1.   排序前已完成分组:
  2.   {一年级=[User{id='1', name='小明', sorted='2', grade='一年级'}, User{id='2', name='小名', sorted='1', grade='一年级'}], 三年级=[User{id='5', name='小项', sorted='3', grade='三年级'}, User{id='6', name='小项', sorted='4', grade='三年级'}], 二年级=[User{id='3', name='小刘', sorted='1', grade='二年级'}, User{id='4', name='小亮', sorted='2', grade='二年级'}]}
  3.   排序分组后:
  4.   {一年级=[User{id='2', name='小名', sorted='1', grade='一年级'}, User{id='1', name='小明', sorted='2', grade='一年级'}], 三年级=[User{id='5', name='小项', sorted='3', grade='三年级'}, User{id='6', name='小项', sorted='4', grade='三年级'}], 二年级=[User{id='3', name='小刘', sorted='1', grade='二年级'}, User{id='4', name='小亮', sorted='2', grade='二年级'}]}
 

标签:name,grade,三年级,list,分组,User,sorted,排序,id
From: https://www.cnblogs.com/tiancai/p/17565407.html

相关文章

  • 如何在 Java 8 中将 List 转换为可变参数对象
    我有一个函数(findByNames)接受传播参数,如下例所示:List<Users>findByNames(String...names){...}作为参数,我有一个列表:List<String>names=asList("john","abraham");所以我想将names列表转换为传播对象以使用findByNames函数,这可以使用Java8吗?我试过这个解......
  • 49. 字母异位词分组
    给你一个字符串数组,请你将字母异位词组合在一起。可以按任意顺序返回结果列表。字母异位词是由重新排列源单词的所有字母得到的一个新单词。示例1:输入:strs=["eat","tea","tan","ate","nat","bat"]输出:[["bat"],["nat","tan"],[&quo......
  • 【Javascript】数组扩展方法:根据key重新分组
    1//数组扩展:根据key重新分组2//field:按什么字段分组3Array.prototype.GroupByKey=function(field)4{5varoriginalArr=this6lettempArr=[]7letresultData=[]8for(leti=0;i<originalArr.length;i++)9{10......
  • Java使用Stream函数对集合进行分组
    1List<Map<String,String>>list=newArrayList<>();2Map<String,String>map1=newHashMap<>();3map1.put("name","卢俊义");4map1.put("book","水浒传"......
  • These are the list of external providers available to the application.
    Thesearethelistofexternalprovidersavailabletotheapplication.https://github.com/davidfowl/TodoApi/blob/c209f6ae5c5f31f4808b0df85f358d4a572ea770/Todo.Web/Server/Authentication/AuthenticationExtensions.cs#L42 ......
  • PHP实现冒泡排序
    冒泡排序的原理:1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3.针对所有的元素重复以上的步骤,除了最后一个。4.持续每次对越来越少的元素重复上面的步骤,直到没有......
  • Python中对列表list去重
    保留原顺序。old_list=[2,3,4,5,1,2,3]new_list=[]foriinold_list:ifinotinnew_list:new_list.append(i)print(new_list)#[2,3,4,5,1]用字典dict去重使用list项作为键创建dict,这将自动删除任何重复项,因为dict不能有重复的键,保留原......
  • @NacosConfigListener注解监听配置变化失效解决
    项目初始配置:maven依赖如下:<!--配置与发现依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency&g......
  • python怎么把list强制转换成int
    如何将Python中的List强制转换为Int在Python中,我们经常需要处理各种数据类型,包括整数(int)和列表(list)。有时,我们需要将列表中的元素转换为整数类型,以便进行一些数值计算或其他操作。在本文中,我们将探讨如何将一个包含数字字符串的列表转换为整数列表。问题描述假设我们有一个列表,......
  • List Map 排序
    importjava.util.*;publicclassTest{publicstaticvoidmain(String[]args){List<Map<String,Object>>list=newArrayList<>();Map<String,Object>item1=newHashMap<>();item1.put("ti......