当前位置: 首页 > news >正文

【JAVA系列】JAVA与C#中List分组、排序方法

C# 中List分组、排序、动态分组

定义实体类

public class Student
{public string Name { get; set; }public int Age { get; set; }public string Grade { get; set; }
} 

按单个属性分组

class Program
{static void Main(){List<Student> students = new List<Student>{new Student { Name = "Alice", Age = 25, Grade = "A" },new Student { Name = "Bob", Age = 22, Grade = "B" },new Student { Name = "Charlie", Age = 24, Grade = "A" },new Student { Name = "David", Age = 23, Grade = "B" }};//1、语言集成查询 (LINQ)  group 分组var groupedByGrade =from student in studentsgroup student by student.Grade into newGroup//orderby newGroup.Keyselect newGroup;foreach (var group in groupedByGrade){Console.WriteLine($"Grade: {group.Key}");foreach (var student in group){Console.WriteLine($"Name: {student.Name}, Age: {student.Age}");}}}
}
使用方法语法的等效代码分组

v ar groupByYearQuery = students.GroupBy(student => student.Grade)//.OrderBy(newGroup => newGroup.Key);foreach (var yearGroup in groupByYearQuery)
{Console.WriteLine($"Key: {yearGroup.Key}");foreach (var student in yearGroup){Console.WriteLine($"\t{student.LastName}, {student.FirstName}");}
}
排序
 记住这么用就对了OrderBy:students.OrderBy(s => s.Age).ToList(); // 升序OrderByDescending: students.OrderByDescending(s => s.Age).ToList();//倒序
分组

这是个扩展方法,因为使用this。keySelector 就是个函数 ,表示用哪个键分组、并返回一个TKey类型的结果。 GroupedEnumerable 类来进行实际的分组操作返回一个实现了 IEnumerable<IGrouping<TKey, TSource>> 接口的结果集合。


public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
{return new GroupedEnumerable<TSource, TKey, TSource>(source, keySelector, IdentityFunction<TSource>.Instance, null);
}
官网链接

其中也有要多个属性分组的示例,也就是嵌套分组吧
对数据分组 (C#)

JAVA 中的List分组、排序及动态分组排序

分组

class Main {public static void main(String[] args) {List<Student> students = Arrays.asList(new Student("Alice", 25, "A"),new Student("Bob", 22, "B"),new Student("Charlie", 24, "A"),new Student("David", 23, "B"));Map<String, List<Student>> groupedByGrade = students.stream().collect(Collectors.groupingBy(Student::getGrade));groupedByGrade.forEach((grade, list) -> {System.out.println("Grade: " + grade);list.forEach(s -> System.out.println("Name: " + s.getName() + ", Age: " + s.getAge()));});}
}

升序和倒序

原理就慢慢再懂吧。记住用就行

List<Student> sortedStudent = students.stream().sorted(Comparator.comparing(Student::getAge)).collect(Collectors.toList()); //升序List<Student> sortedStudent = students.stream().sorted(Comparator.comparing(Student::getAge).reversed()).collect(Collectors.toList()); //倒序

简简单单的记录一下自己在.net转java过程中遇到的一些知识点,不是很深
写的有不对或者理解不深刻的地方,请各位老师多多的提,非常感谢!
老师们,同伟太想进步了!!!

相关文章:

  • 【c++游戏】harry potter(破解版)
  • 定制Jackson 的ObjectMapper(编程式),自定义json转换处理器来指定序列化和反序列化规则。
  • 心链2---前端开发(整合路由,搜索页面,用户信息页开发)
  • [windows系统安装/重装系统][step-4][番外篇-2]N卡驱动重装 |解决:开机几小时后电脑卡顿 | 后台自动运行了上千个Rundll32进程问题
  • FL Studio21中文版新特性!揭秘中文水果编曲神器
  • Java | Leetcode Java题解之第112题路径总和
  • sqlserver的查询(三)
  • 如何确保大模型 RAG 生成的信息是基于可靠的数据源?
  • c语言游戏实战(3):三子棋
  • 如何用pyecharts工具制作地图
  • SpringBoot 集成 Nebula
  • mysql内存结构
  • golang 连接mysql数据库
  • 在docker中运行SLAM十四讲程序
  • 2903. 找出满足差值条件的下标 I
  • 【347天】每日项目总结系列085(2018.01.18)
  • Apache的80端口被占用以及访问时报错403
  • avalon2.2的VM生成过程
  • bearychat的java client
  • Hibernate【inverse和cascade属性】知识要点
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • MySQL-事务管理(基础)
  • redis学习笔记(三):列表、集合、有序集合
  • select2 取值 遍历 设置默认值
  • 离散点最小(凸)包围边界查找
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 写代码的正确姿势
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 一个项目push到多个远程Git仓库
  • 异步
  • #include到底该写在哪
  • #Linux(make工具和makefile文件以及makefile语法)
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • (3) cmake编译多个cpp文件
  • (C#)一个最简单的链表类
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (三)elasticsearch 源码之启动流程分析
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (原創) 未来三学期想要修的课 (日記)
  • ***利用Ms05002溢出找“肉鸡
  • ./和../以及/和~之间的区别
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .net MySql
  • .net 提取注释生成API文档 帮助文档
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .net开发引用程序集提示没有强名称的解决办法
  • @RequestBody与@ModelAttribute
  • [BJDCTF 2020]easy_md5
  • [BZOJ4337][BJOI2015]树的同构(树的最小表示法)
  • [C++] new和delete
  • [C++]四种方式求解最大子序列求和问题
  • [cogs2652]秘术「天文密葬法」
  • [hdu 4552] 怪盗基德的挑战书