Java8 集合去重和排序
java 8 去重和排序
排序的方法
List<Integer> lists = Arrays.asList(1,1,2,3); // 升序
lists.sort(Comparator.comparing(Integer::intValue)); // 降序
lists.sort(Comparator.comparing(Integer::intValue).reversed()); 或者 // 升序
lists.stream().sorted().collect(Collectors.toList()); // 降序
lists.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
import java.util.*;
import java.util.stream.Collectors; public class Main {
public static void main(String[] args) {
List<Integer> lists = Arrays.asList(1,1,2,3);
List<Integer> collect = distinctFiled(lists);
System.out.println(collect);
System.out.println(sortFiled(lists));
List<User> users = Arrays.asList(
new User(1,"小王","男"),
new User(2,"小李","男"),
new User(3,"小张","女"),
new User(2,"小三","男"));
List<User> userList = distinctObjectFiled(users);
System.out.println(userList);
System.out.println(sortObjectFiled(users));
} /**
* 根据用户的性别去重
* @param users
* @return
*/
private static List<User> distinctObjectFiled(List<User> users) { return users.stream().collect(
Collectors.collectingAndThen(Collectors.toCollection(
() -> new TreeSet<>(Comparator.comparing(User::getSex))), ArrayList::new)
); }
/**
* 根据用户id排序
* @param users
* @return
*/
private static List<User> sortObjectFiled(List<User> users) {
users.sort(Comparator.comparing(User::getId));
return users; } /**
* 去除重复的属性
* @param lists
* @return
*/
private static List<Integer> distinctFiled(List<Integer> lists) {
return lists.stream().distinct().collect(Collectors.toList());
}
/**
* 排序
* @param lists
* @return
*/
private static List<Integer> sortFiled(List<Integer> lists) {
lists.sort(Comparator.comparing(Integer::intValue));
return lists;
} }
model
public class User {
private Integer id;
private String name;
private String sex;
public User() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public User(Integer id, String name, String sex) {
this.id = id;
this.name = name;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", sex='" + sex + '\'' +
'}';
}
public void setSex(String sex) {
this.sex = sex;
}
}
Java8 集合去重和排序的更多相关文章
- List集合去重的一些方法(常规遍历、Set去重、java8 stream去重、重写equals和hashCode方法)
1. 常规元素去重 碰到List去重的问题,除了遍历去重,我们常常想到利用Set集合不允许重复元素的特点,通过List和Set互转,来去掉重复元素. // 遍历后判断赋给另一个list集合,保持原来顺 ...
- Golang 实现 set 集合,变相实现 切片去重、排序 功能
Java 中的集合(set)去重很方便,PHP 中的数组值去重,就更加方便,一个函数搞定:array_unique(),Golang 中就比较苦逼了,官方没有提供对“切片去重”的功能,而项目中,又经常 ...
- Java8集合框架——基本知识点
前言 Java的基础集合框架的内容并不复杂,List.Map.Set 中大概10个常见的集合类,建议多看几遍源码(Java8),然后回过头再来看看这些各路博客总结的知识点,会有一种豁然开朗的感觉. 本 ...
- python中sorted()和set()去重,排序
前言 在看一个聊天机器人的神经网络模型训练前准备训练数据,需要对训练材料做处理(转化成张量)需要先提炼词干,然后对词干做去重和排序 words = sorted(list(set(words))) 对 ...
- c++中std::set自定义去重和排序函数
c++中的std::set,是基于红黑树的平衡二叉树的数据结构实现的一种容器,因为其中所包含的元素的值是唯一的,因此主要用于去重和排序.这篇文章的目的在于探讨和分享如何正确使用std::set实现去重 ...
- python redis连接 有序集合去重
# -*- coding: utf-8 -*- import redisfrom constant import redis_ip, redis_db, redis_pw, logger, redis ...
- Stream流的基本介绍以及在工作中的常用操作(去重、排序以及数学运算等)
平时工作中,我在处理集合的时候,总是会用到各种流操作,但是往往在处理一些较为复杂的集合时,还是会出现无法灵活运用api的场景,这篇文章的目的,主要是为介绍一些工作中使用流时的常用操作,例如去重.排序和 ...
- List集合去重的一种方法
前一段时间们需要对一个List<Model>集合去重,情况是该集合中会出现多个Name属性值相同的,但是其他属性值不同的数据. 在这种情况下,需求要只保留其中一个就好. 我觉得遍历和Has ...
- List集合去重的一种方法 z
需要对一个List<Model>集合去重,情况是该集合中会出现多个Name属性值相同的,但是其他属性值不同的数据. 在这种情况下,需求要只保留其中一个就好. 我觉得遍历和HashSet都不 ...
随机推荐
- java实现第六届蓝桥杯无穷分数
无穷分数 无穷分数 无穷的分数,有时会趋向于固定的数字. 请计算[图1.jpg]所示的无穷分数,要求四舍五入,精确到小数点后5位,小数位不足的补0. 请填写该浮点数,不能填写任何多余的内容. 结果:0 ...
- ReentrantReadWriteLock(读写锁)全部源码注释
package java.util.concurrent.locks; import java.util.concurrent.TimeUnit; import java.util.Collectio ...
- (四)rsync未授权访问
01 漏洞描述 rsync是Linux/Unix下的一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件和目录,默认运行在873端口.由于配置不当,导致任何人可未授权访问rsync,上传 ...
- 获取Google浏览器保存的密码
获取Google中保存的密码 直接在浏览器上输入 chrome://settings/passwords
- tensorflow2.0学习笔记第二章第一节
2.1预备知识 # 条件判断tf.where(条件语句,真返回A,假返回B) import tensorflow as tf a = tf.constant([1,2,3,1,1]) b = tf.c ...
- Linux 和 Vim 常用命令整理
Sftp常用命令: lcd f:本地切换到 F盘 lpwd本地 当前目录 lls本地 文件列表 put 本地 上传文件到服务器(put输入后,回车会有弹窗,选择上传文件) get下载文件到本地 Lin ...
- Nice Jquery Validator 内置属性
required - 必填 适用于 input.textarea.select 输入框.(checkbox 与 radio 请使用 checked 规则)字段必填,则值不能为空.字段非必填,则值为空的 ...
- JavaScript选择器和节点操作
感谢:链接(视频讲解很清晰) 下文中讲解用到Chrome中的console调试台,如果不懂最好先看一下:链接 JavaScript选择器 作用:选取html中的标签等内容,最重要的还是为节点的操作(增 ...
- TensorFlow从0到1之TensorFlow超参数及其调整(24)
正如你目前所看到的,神经网络的性能非常依赖超参数.因此,了解这些参数如何影响网络变得至关重要. 常见的超参数是学习率.正则化器.正则化系数.隐藏层的维数.初始权重值,甚至选择什么样的优化器优化权重和偏 ...
- 关联函数-web_reg_save_param
int web_reg_save_param(const char *ParamName,<List of Attributes>,LAST) 返回值:成功时返回LR_PASS,失败时返回 ...