java List分组和排序处理
在一些应用中,需要将List中的对象按某种情况分组或者排序处理。做个小结如下:
1. 如一个List中存放了ProductDoing对象,productDoing对象有rawTypeId 现在要求将rawTypeId分组处理。
先用Map找出list中所有的分组:
//原料类型组
Map<Integer,String> groups = new HashMap<Integer,String>();
for(ProductDoing pd : products){
groups.put(pd.getRawTypeId(),"");//这里并没有将该组的数据存入,看自己的需求吧
}
接下来就可以对已知的分组处理。
for(Integer rawTypeId : groups.keySet()){
for(ProductDoing pd : products){
if(rawTypeId.equals(pd.getRawTypeId())){
//处理该组的数据
}
}
}
2. 如2个List中存放了map<String,String>对象, 一个map是一个条数据库表记录,key是数据库表中的字段名,value是字段对应的值, map中操作时间的key_value, 需要将这2个List合并之后按map中的操作时间去排个序。。。。
//先用addAll将list连接起来,合成一个List
List result = new ArrayList();
Collections.addAll(result, a);//假设a b即为那两个list
Collections.addAll(result, b);
//实现一个Comparator就好了,根据map中的操作时间来排序
Collections.sort(result, new Comparator<Map>()
{
public int compare(Map o1, Map o2) {
Date date1 = (Date)o1.get("trackdatetime");
Date date2 = (Date)o2.get("trackdatetime");
return date1.compareTo(date2);
}
});
java List分组和排序处理的更多相关文章
- lambda表达式在解决java后台分组排序时的应用
需求:按照起始日期查询出数据库里一段连续日期的住院信息. 问题:数据库里的住院信息可能不是完整的,也就是在给出的日期区间里只有若干天的数据,缺少某些日期的数据. 解决: 1.需要我们先按日期分组查出数 ...
- (2)Java数据结构--二叉树 -和排序算法实现
=== 注释:此人博客对很多个数据结构类都有讲解-并加以实例 Java API —— ArrayList类 & Vector类 & LinkList类Java API —— BigDe ...
- 使用dataframe解决spark TopN问题:分组、排序、取TopN和join相关问题
package com.profile.mainimport org.apache.spark.sql.expressions.Windowimport org.apache.spark.sql.fu ...
- Java内存访问重排序笔记
>>关于重排序 重排序通常是编译器或运行时环境为了优化程序性能而采取的对指令进行重新排序执行的一种手段. 重排序分为两类:编译期重排序和运行期重排序,分别对应编译时和运行时环境. > ...
- Java线性表的排序
Java线性表的排序 ——@梁WP 前言:刚才在弄JDBC的时候,忽然觉得order-by用太多了没新鲜感,我的第六感告诉我java有对线性表排序的封装,然后在eclipse里随便按了一下“.” ,哈 ...
- Linq入门演练---(1)基本用法-分组,排序,内连接
这一节大家共同学习下LINQ的基本用法,主要包括LINQ的分组,排序,和内外连接. 1.分组 基本语法: group element by key element 表示查询结果返回的元素,key表示 ...
- java数组降序排序之冒泡排序
import java.util.Arrays;//必须加载 class Demo{ public static void main(String []args){ int[] arr={3,54,4 ...
- java中的选择排序之降序排列
import java.util.Arrays;//必须加载 class Demo{ public static void main(String []args){ int[] arr={3,54,4 ...
- mysql 分组内 排序
mysql 分组内 排序 类似于 sqlserver over partition by 因为mysql中木有sqlserver over partition by这个函数,要从sqlserver ...
随机推荐
- 服务器收不到支付宝notify_url异步回调请求的问题排查
小背景 最近在调整支付宝支付的功能时发现,不能够正常接收支付宝付款成功之后的回调通知了,从代码到配置最后到服务器配置都排查了一遍,最终发现问题原因竟然是因为我们的回调地址notify_url是http ...
- 基于Docker部署ETCD集群
基于Docker部署ETCD集群 关于ETCD要不要使用TLS? 首先TLS的目的是为了鉴权为了防止别人任意的连接上你的etcd集群.其实意思就是说如果你要放到公网上的ETCD集群,并开放端口,我建议 ...
- ZooKeeper和ZAB协议
前言 ZooKeeper是一个提供高可用,一致性,高性能的保证读写顺序的存储系统.ZAB协议为ZooKeeper专门设计的一种支持数据一致性的原子广播协议. 演示环境 $ uname -a Darwi ...
- qemu-img convert -c disk /var/lib/nova/instances/_base/94a107318b54108fc8e76fff21a86d7c390a20bf -O qcow2 hebin.qcow2
- spring boot jar包替换报错之Unable to open nested entry 'BOOT-INF/lib/cache-api-0.4.jar'.
spring boot用layout ZIP打出来的包能够支持外部classpath,但是当用rar/7zip替换其中的jar后,报下列错误: Unable to open nested entry ...
- asp.net core 获取appsettings.json里的配置
public GoodsController(IConfiguration configuration) { Configuration = configuration; UpFileDir = Co ...
- 爬虫中Requests模块
Requests: 让 HTTP 服务人类 虽然Python的标准库中 urllib2 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 “ ...
- nginx自定义错误页面
这里配置注意是在 server 443端口 ,蓝色部分为主要部分.这个server不是全部代码. server{ #监听443端口 listen ; #对应的域名,把baofeidyz.com改成你们 ...
- 系统重装之认识UEFI
UEFI是一种新型的引导方式?他与传统的BIOS引导不同,传统BIOS引导需要经过(开机→BIOS初始化→BIOS自检→引导系统→进入系统)五个步骤来完成引导操作,UEFI只需要(开机→UEFI初始化 ...
- 用Python实现的Internet电话软件(P2P-SIP)<开源>
本博客为本人学习笔记,代码出自GitHub:https://github.com/theintencity/p2p-sip 由于GitHub原著为英文,且相当的啰嗦,本文为翻译内容并去除其啰嗦的部分 ...