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实现 N的阶乘
import java.util.Scanner; public class n的阶乘 { public static void main(String[] args) { Scanner sc =n ...
- java实现第七届蓝桥杯煤球数量
煤球数量 煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), - 如果一共有100层,共有多少个煤 ...
- Python学习之温度转换实例分析篇
#TempConvert.py Tempstr=input('请输入要转换的温度值:') if Tempstr[-1] in ['C','c']: F=1.8*eval(Tempstr[0:-1])+ ...
- Mybatis连接池及事务
一:Mybatis连接池 我们在学习WEB技术的时候肯定接触过许多连接池,比如C3P0.dbcp.druid,但是我们今天说的mybatis中也有连接池技术,可是它采用的是自己内部实现了一个连接池技术 ...
- electron内使用vue-slider-component组件报“$attrs is readonly”错误
解决办法 安装vue-no-ssr插件 https://www.npmjs.com/package/vue-no-ssr npm install vue-no-ssr --save-dev 代码 &l ...
- 解决关闭app权限弹框后无法识别页面对象问题
在使用appium进行安卓端app的自动化测试,我碰到这样下面这几个问题: 1.每次启动我的待测app时总会提示app权限 2.关闭完权限后,无法识别页面对象 第一个问题的解决,我更换不同的真机进行测 ...
- k8s学习-集群调度
4.7.集群调度 4.7.1.说明 简介 Scheduler 是 kubernetes 的调度器,主要的任务是把定义的 pod 分配到集群的节点上.听起来非常简单,但有很多要考虑的问题: 公平:如何保 ...
- 你都这么拼了,面试官TM怎么还是无动于衷?
前言 面试,对于每个人而然并不陌生,可以说是必须经历的一个过程了,小到一场考试,大到企业面试,甚至大型选秀...... 有时自己明明很努力了,但偏偏会在面试环节出了插曲,比如,紧张就是最容易出现的了. ...
- Markdown 主题修改
加粗字体的颜色修改 strong, b{ color: #111111; } 斜体的颜色修改 em, i { color: #111111; } 高亮字体的背景颜色修改 #write mark { b ...
- jQuery实现购物车商品数量及总价的计算
记录一下项目中遇到的计算购物车商品数量和总价的jQuery代码,重点在于选择器以及.text()命令的使用. 先上效果图,点击加减,商品数量以及总价会发生相应变化. html代码: <div c ...