`

分组排序

阅读更多

直接上代码

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class GroupSortTest {
    public static void main(String[] args) {
    
        List<Order> list = new ArrayList<Order>();
        Order o1 = new Order("10086","3",(long) 1008603);
        Order o2 = new Order("10086","2",(long) 1008602);
        Order o4 = new Order("10010","1",(long) 1001001); 
        Order o5 = new Order("10000","3",(long) 1000003);
        Order o6 = new Order("10010","3",(long) 1001003);
        Order o7 = new Order("10000","1",(long) 1000001);
        Order o8 = new Order("10000","2",(long) 1000002);
        Order o9 = new Order("10010","2",(long) 1001002);
        Order o3 = new Order("10086","1",(long) 1008601);
        
        list.add(o1);
        list.add(o2);
        list.add(o3);
        list.add(o4);
        list.add(o5);
        list.add(o6);
        list.add(o7);
        list.add(o8);
        list.add(o9);
        
        Map<String, List<Order>> map = OrderSortByGroup(list);
        
        for(Map.Entry<String, List<Order>> entry : map.entrySet()){
            for(Order o : entry.getValue() ){
                System.out.println(entry.getKey() +"--"+o.getSeq()+"--"+o.getStatusId());
            }
        }
        
    }
    
    public static Map<String, List<Order>> OrderSortByGroup(List<Order> list){
        Map<String, List<Order>> map = new HashMap<String, List<Order>>();
        for(Order order : list) {
            List<Order> staList = map.get(order.orderNo);
            if(staList==null){
                staList = new ArrayList<Order>();
            }
            Order od = new Order();
            od.setSeq(order.seq);od.setStatusId(order.statusId);
            staList.add(od);
            
            Collections.sort(staList, new Comparator<Order>() {
                @Override
                public int compare(Order o1, Order o2) {
                    return o1.getSeq().compareTo(o2.getSeq());
                }
            });
            
            map.put(order.orderNo, staList);
        }
        return map;
    }
    
}

class Order {
    String orderNo;    //订单号
    String seq;        //订单节点序号
    Long statusId;    //订单节点主键
    
    public Order() {}
    
    public Order(String orderNo, String seq, Long statusId) {
        super();
        this.orderNo = orderNo;
        this.seq = seq;
        this.statusId = statusId;
    }

    public String getOrderNo() {
        return orderNo;
    }
    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }
    public String getSeq() {
        return seq;
    }
    public void setSeq(String seq) {
        this.seq = seq;
    }
    public Long getStatusId() {
        return statusId;
    }
    public void setStatusId(Long statusId) {
        this.statusId = statusId;
    }
}

 运行结果:

10086--1--1008601

10086--2--1008602

10086--3--1008603

10000--1--1000001

10000--2--1000002

10000--3--1000003

10010--1--1001001

10010--2--1001002

10010--3--1001003

 

分享到:
评论

相关推荐

    SQL Server分组排序取数据的实现

    本文将深入探讨如何在SQL Server中实现分组排序并获取每组的特定行数据。 首先,我们要理解分组的概念。在SQL中,`GROUP BY`语句用于将数据根据一个或多个列进行分类,例如在示例代码中,我们根据`A.DocNo`, `A1....

    城市列表(按照字母分组排序)

    在Android开发中,"城市列表(按照字母分组排序)"是一个常见的功能需求,它能够帮助用户更加方便快捷地找到所需的城市。这个功能通常应用于地图应用、天气应用或者是任何需要用户选择地理位置的软件。实现这样的...

    oracle分组排序统计高级用法

    ### Oracle 分组排序统计高级用法详解 #### 一、Oracle分组排序和统计概述 在Oracle数据库中,实现分组排序和统计是一项常见的需求,主要用于处理大量的数据,并从中提取有价值的信息。通过合理运用SQL语句,特别...

    hibernate criteria 分组 排序 关联

    ### Hibernate Criteria 分组、排序与关联查询详解 #### 标题与描述理解 - **标题**:“hibernate criteria 分组 排序 关联”这一标题明确了本文将围绕Hibernate Criteria API进行分组、排序以及关联查询的具体...

    Visual C++源代码 163 如何在水晶报表中分组排序记录

    Visual C++源代码 163 如何在水晶报表中分组排序记录Visual C++源代码 163 如何在水晶报表中分组排序记录Visual C++源代码 163 如何在水晶报表中分组排序记录Visual C++源代码 163 如何在水晶报表中分组排序记录...

    JavaScript数据根据字段值分组排序

    JavaScript数据排序,根据数据中的字段,自定义排序方式,实现数据根据不同的字段值分组显示

    MySQL分组排序功能

    ### MySQL分组排序功能 #### 知识点概述 MySQL是一种广泛使用的开源关系数据库系统,因其性能稳定、易于管理等特点而受到开发者的喜爱。但在某些高级查询方面,MySQL相较于其他数据库(如Oracle)存在一定的局限性...

    SQL中分组排序问题

    在SQL中,分组排序问题通常涉及到数据的聚合和排名,这是数据分析和报表生成的关键步骤。本问题的目标是检索每学期每门课的学生排名情况,包括学期、课程号、学号、总评成绩以及排名,按照特定的排序规则进行输出。 ...

    如何在水晶报表中分组排序记录源程序实例,C#.net源代码编写,

    在Crystal Reports中,分组和排序是数据呈现的关键步骤,特别是在C#.NET环境中,通过Visual Studio.NET进行开发时。这篇文章将深入探讨如何使用C#.NET编写源代码来实现这一功能。 首先,理解水晶报表(Crystal ...

    基于RecyclerView的字母分组排序列表(类似通讯录)

    在很多场景下,比如通讯录应用,我们希望实现一个按字母分组的列表,用户可以快速滚动到特定区域,这通常涉及到对数据进行字母分组排序并实现侧滑字母导航的功能。本文将详细探讨如何基于RecyclerView实现这一功能。...

    wpf listView分组排序

    ListView 分组排序是数据可视化中的关键概念,它帮助用户更有效地管理和理解大量数据。在此,我们将深入探讨如何在 WPF 中实现ListView的分组和排序功能。 首先,我们需要理解ListView的基本结构。ListView是基于...

    分组排序选择需要一条

    sql 排序:row_number() over(partition by sjjl_id order by fksj desc,最优化的情况,里面放的有例子,大家可以参考

    论文研究-分组排序算法.pdf

    提出了分组排序算法,详细分析了算法的原理及其时间与空间复杂度,得出了在最坏情况下的时间复杂度是θ(mn);最好情况和平均情况下的时间复杂度均是θ(nlog(n/mk));在最坏情况下的空间复杂度是O(mn-m2+m)...

    PowerQuery分组排序测试数据

    PowerQuery分组排序测试数据

    lambda表达式解决java后台分组排序过程解析

    "lambda表达式解决java后台分组排序过程解析" lambda表达式是Java 8中引入的一种新的语法特性,它允许开发者使用更加简洁的方式来编写代码。lambda表达式可以用来代替匿名内部类,简化代码的编写,并且提高代码的...

    引入激活加权策略的分组排序学习方法.docx

    针对这一问题,本文引入了激活加权策略的分组排序学习方法,称为W-GSF。这种方法在GSF的基础上,引入激活单元对多元变量进行加权,利用神经网络动态学习这些权重。这样可以适应性地强调某些文档对排序的影响,特别是...

    Mssql 增加排序列,分组排序与普通排序 ROW_NUMBER.docx

    2. **分组排序(分组内排序)**: 在描述中,`OVER(PARTITION BY StatisticalDate)` 会根据 `StatisticalDate` 字段的值将数据分成不同的组,在每个组内再根据 `EquipName` 进行排序。这使得在同一个统计日期内的...

    java 集合分组与排序

    本话题将重点关注集合的分组和排序,这是处理数据时常见的需求。Java集合框架中的`List`接口和数组(Array)是两种常用的数据结构,它们在处理数据时各有优势。下面我们将深入探讨如何在Java中实现集合的分组与排序...

    Mysql利用group by分组排序

    在Mysql中,`GROUP BY`的使用方式与Oracle等其他数据库系统有所不同,尤其是在处理分组排序时,Mysql提供了一种独特的方法。本文将深入探讨Mysql中`GROUP BY`的分组排序功能,并通过一个实际的例子来说明其工作原理...

Global site tag (gtag.js) - Google Analytics