首页 > 编程语言 >【JAVA系列】JAVA与C#中List分组、排序方法

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

时间:2024-05-24 17:55:42浏览次数:66  
标签:JAVA Student C# Age List Grade 分组 student new

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 students
              group student by student.Grade into newGroup
              //orderby newGroup.Key
              select 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过程中遇到的一些知识点,不是很深
写的有不对或者理解不深刻的地方,请各位老师多多的提,非常感谢!
老师们,同伟太想进步了!!!

标签:JAVA,Student,C#,Age,List,Grade,分组,student,new
From: https://blog.csdn.net/weixin_46424784/article/details/139122634

相关文章

  • OFDM 802.11a的FPGA实现(二十二)DAC模块(含代码)
    目录1.前言2.实现思路3.verilog代码4.MoselSim仿真完整工程链接(含verilog和Matlab代码):OFDM802.11a的xilinxFPGA实现1.前言上一节完成了MUC模块,实现了对MAC层进行数据交互,以及控制物理层各个模块的工作。现在还剩下最后一个DAC模块,作用是将时域的输出按照前导码、sig......
  • MFC 无按钮消息提示框
    一、背景MFC里的消息提示框(MessageBox)是带按钮的,比如:MB_OK,MB_OKCANCEL,MB_YESNO,不支持无按钮的情况。二、方案通过建立一个非模态对话框(不会阻塞程序往下运行),并在里面添加一个静态文本框(设置只读属性),然后将要提示的内容设置给这个文本框,将标题设置给对话框,再居中显示这个对话框......
  • STL 以及 C语言与C++的区别
    C++语言的标准库(STL)容器(Containers)vector:动态数组,可以动态增长和收缩,支持快速随机访问元素。list:双向链表,支持在任意位置快速插入和删除元素。map:关联容器,以键值对(key-value)形式存储元素,支持快速查找和插入。竞赛常用C++STL用法https://io.zouht.com/154.htmlv......
  • 618购物节快递量激增,EasyCVR视频智能分析助力快递网点智能升级
    随着网络618购物节的到来,物流仓储与快递行业也迎来业务量暴增的情况。驿站网点和快递门店作为物流体系的重要组成部分,其安全性和运营效率日益受到关注。为了提升这些场所的安全防范能力和服务水平,实施视频智能监控方案显得尤为重要。一、方案背景与目标近年来,驿站网点和快递门店......
  • 智慧平安小区建设方案:EasyCVR视频+AI能力全面提升小区安全管理水平
    随着城市化进程的加快和科技的不断发展,智慧平安小区建设成为了提升社区治理水平和居民安全感的重要手段。TSINGSEE青犀EasyCVR智慧平安小区平台采集汇总智慧小区各类视频资源基础数据,进行分级分类管理,并为公安、政法、大数据局、街道社区等用户提供数据深度应用服务,可实现基层数据......
  • .Net6 web API (ResouceFilter-ActionFilter)
    前沿net中的ResouceFilter和ActionFilter 有啥主要区别呢其实2者都是过滤器 在ASP.NETCore中,ResourceFilter和ActionFilter是两种不同类型的过滤器,用于在请求处理过程中执行额外的逻辑。它们可以用于对请求和响应进行处理、修改或拦截,以实现诸如授权、日志记录......
  • InfoTS: 具有信息感知增强的时间序列对比学习《Time Series Contrastive Learning wit
    现在是2024年5月23日,14:30,开始看论文。论文:TimeSeriesContrastiveLearningwithInformation-AwareAugmentations或者是:Timeseriescontrastivelearningwithinformation-awareaugmentationsGitHub:https://github.com/chengw07/InfoTSAAAI2023的论文。 摘要近年......
  • Mask DINO: Towards A Unified Transformer-based Framework for Object Detection an
    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!ProceedingsoftheIEEE/CVFConferenceonComputerVisionandPatternRecognition.2023. Abstract在本文中,我们提出了一个统一的对象检测和分割框架MaskDINO。MaskDINO通过添加一个支持所有图像分割任务(例如......
  • 全国产化服务器设计原理图:905-多路PCIe的阵列计算全国产化服务器
    多路PCIe的阵列计算全国产化服务器      多路PCIe的阵列计算全国产化服务器以国产化处理器(海光、飞腾ARM、算能RSICV)为主板,扩展6-8路PCIe3.0X4计算卡;计算卡为全国产化的AI处理卡(瑞星微ARM,算能AI,灵犀类脑计算),低功耗FPGAPCIe计算卡;同时扩展万兆以太......
  • AoPS - Chapter 19 Probability
    本章介绍了一些概率的基本概念与条件概率。独立与互斥Twoeventsarecalleduncorrelated(orindependent)(独立)iftheyhavenobearingoneachother.\[P(A\capB)=P(A)\timesP(B)\]Twoeventsarecalledmutuallyexclusive(互斥)ifbotheventscannotsimultaneou......