用Comparator排序和分组
Test实体
import java.util.Objects; /**
* @author gallen
* @description
* @date 2018/11/16
* @time 18:57
*/
public class Test { Integer id; String name; Integer age; Integer sex; public Test(Integer id, String name, Integer age, Integer sex) {
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
} public Integer getId() {
return this.id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return this.name;
} public void setName(String name) {
this.name = name;
} public Integer getAge() {
return this.age;
} public void setAge(Integer age) {
this.age = age;
} public Integer getSex() {
return this.sex;
} public void setSex(Integer sex) {
this.sex = sex;
} @Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Test)) return false;
Test test = (Test) o;
return Objects.equals(this.getId(), test.getId()) &&
Objects.equals(this.getName(), test.getName()) &&
Objects.equals(this.getAge(), test.getAge()) &&
Objects.equals(this.getSex(), test.getSex());
} @Override
public int hashCode() {
return Objects.hash(this.getId(), this.getName(), this.getAge(), this.getSex());
} @Override
public String toString() {
return "Test{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", sex=" + sex +
'}';
}
}
排序、分组
import java.util.Objects; /**
* @author gallen
* @description
* @date 2018/11/16
* @time 18:57
*/
public class Demo { public static void main(String[] args) {
List<Test> list = Lists.newArrayList();
list.add(new Test(1, "zhangsan", 37, 1));
list.add(new Test(2, "lisi", 35, 2));
list.add(new Test(3, "wangwu", 25, 2));
list.add(new Test(4, "zhaoliu", 67, 1));
//排序
Collections.sort(list, new Comparator<Test>() {
@Override
public int compare(Test o1, Test o2) {
return o1.id.compareTo(o2.id);
}
});
list1.stream().forEach(test -> {
System.out.println("list1 = " + test.toString());
});
//分组
List<List<Test>> list2 = divider(list, new Comparator<Test>() {
@Override
public int compare(Test o1, Test o2) {
if (o1.age.intValue() > 30 && o2.age.intValue() > 30) {
return 0;
} else if (o1.age.intValue() > 30 && o2.age.intValue() <= 30) {
return 1;
} else if (o1.age.intValue() <= 30 && o2.age.intValue() > 30) {
return -1;
} else if (o1.age.intValue() <= 30 && o2.age.intValue() <= 30) {
return 0;
}else{
return 0;
}
}
});
list2.stream().forEach(test -> {
System.out.println("list2 = " + test.toString());
});
}
}
用Comparator排序和分组的更多相关文章
- Hadoop学习笔记—11.MapReduce中的排序和分组
一.写在之前的 1.1 回顾Map阶段四大步骤 首先,我们回顾一下在MapReduce中,排序和分组在哪里被执行: 从上图中可以清楚地看出,在Step1.4也就是第四步中,需要对不同分区中的数据进行排 ...
- LINQ简明教程:数据排序、分组、过滤
LINQ可以对很多数据源进行查询操作,比如数据库.数组(array).链表(list).XML文件等.在本文中,我将从数组中提取数据,这些数据是10个最受欢迎的国家.有一个类叫Countries,有c ...
- MySQL的外键,修改表,基本数据类型,表级别操作,其他(条件,通配符,分页,排序,分组,联合,连表操作)
MySQL的外键,修改表,基本数据类型,表级别操作,其他(条件,通配符,分页,排序,分组,联合,连表操作): a.创建2张表 create table userinfo(nid int not nul ...
- MySql下实现先排序后分组
最近在工作中遇到一个先排序后分组的需求,发现MySql不同的版本有不同的结果,特此记录. 举例:要求在shop表中查询出各类型商店中价格最高的商品. --表结构-- create table `sho ...
- LINQ之路14:LINQ Operators之排序和分组(Ordering and Grouping)
本篇继续LINQ Operators的介绍,这里要讨论的是LINQ中的排序和分组功能.LINQ的排序操作符有:OrderBy, OrderByDescending, ThenBy, 和ThenByDe ...
- ElasticSearch6.0 Java API 使用 排序,分组 ,创建索引,添加索引数据,打分等(一)
ElasticSearch6.0 Java API 使用 排序,分组 ,创建索引,添加索引数据,打分等 如果此文章对你有帮助,请关注一下哦 1.1 搭建maven 工程 创建web工程 ...
- mysql 怎样先排序再分组
权游游牧族:众所周知!一句SqL语句不能先排序再分组.所以这里给出几个案例 --表结构-- create table `shop` ( `id` int (10) PRIMARY KEY, `shop ...
- sql中实现先排序后分组
数据表结构和数据如下: CREATE TABLE `commun_message_chat_single` ( `id` ) NOT NULL AUTO_INCREMENT, `chat_id` ) ...
- MySQL进阶5--分组函数 / 分组排序和分组查询 group by(having) /order by
MySQL进阶--分组排序和分组查询 group by(having) /order by /* 介绍分组函数 功能:用做统计使用,又称为聚合函数或组函数 1.分类: sum, avg 求和 /平均数 ...
随机推荐
- ssas 为绑定指定的大小太小,导致一个或多个列值被截断
错误信息:ssas 为绑定指定的大小太小,导致一个或多个列值被截断 如果更改了某个维度或是事实表的字段长度,在处理CUBE时提示此错误,我们要做以下更新: 1.刷新数据源视图. 2.打开多维数据集,查 ...
- 修改datatable列
var dt = dh.GetPageTable("tabelename"); dt.Columns["TBLNO"].ColumnName = "业 ...
- mysql操作封装
<?php//连接数据库function connect(){ $link = mysql_connect(DB_HOST,DB_USER,DB_PWD)or die("数据库连接失 ...
- android动画ppt整理
案例
- java核心技术 - 17个重要的知识点
1.Java中没有多继承,而是用接口来代替多继承 2.运行一个已经编译的程序时,Java解释器总是从指定类的main方法中的代码开始执行,因此,执行代码中必须有一个main函数. 3.Java是典型的 ...
- 【整站源码分享】分享一个JFinal3.4开发的整站源码,适合新手学习
分享这个源码是14年开发上线的<威海创业者>站点的全套整站源码,前后端都在一个包里.当时开发使用的是JFinal1.4,最近改成了JFinal3.4.使用的JSP做的页面.有一定的参考价值 ...
- [Java]获取byte数组的实际使用长度
背景:byte.length只能获取到初始化的byte数组长度,而不是实际使用的长度,因此想要获取到实际的使用长度只能靠其他方法实现. 方法一: public class ByteActualLeng ...
- 【LeetCode】4.Median of Two Sorted Arrays 两个有序数组中位数
题目: There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the ...
- Cocos2d-x数据相关的类用法简介(附示例)
(搬运自我在SegmentFault的博客) 在Cocos2d-x的学习和使用中,我遇到了很多关于数据的操作.在这个过程中,我学习了Cocos2d-x自带的很多功能.下面我把接触到的类罗列在下面,给出 ...
- [VC]ocx控件怎么屏蔽backspace的后退键
<script Language=javascript> function document.onkeydown() { if(window.event.keyCode = ...