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 集合去重和排序的更多相关文章

  1. List集合去重的一些方法(常规遍历、Set去重、java8 stream去重、重写equals和hashCode方法)

    1. 常规元素去重 碰到List去重的问题,除了遍历去重,我们常常想到利用Set集合不允许重复元素的特点,通过List和Set互转,来去掉重复元素. // 遍历后判断赋给另一个list集合,保持原来顺 ...

  2. Golang 实现 set 集合,变相实现 切片去重、排序 功能

    Java 中的集合(set)去重很方便,PHP 中的数组值去重,就更加方便,一个函数搞定:array_unique(),Golang 中就比较苦逼了,官方没有提供对“切片去重”的功能,而项目中,又经常 ...

  3. Java8集合框架——基本知识点

    前言 Java的基础集合框架的内容并不复杂,List.Map.Set 中大概10个常见的集合类,建议多看几遍源码(Java8),然后回过头再来看看这些各路博客总结的知识点,会有一种豁然开朗的感觉. 本 ...

  4. python中sorted()和set()去重,排序

    前言 在看一个聊天机器人的神经网络模型训练前准备训练数据,需要对训练材料做处理(转化成张量)需要先提炼词干,然后对词干做去重和排序 words = sorted(list(set(words))) 对 ...

  5. c++中std::set自定义去重和排序函数

    c++中的std::set,是基于红黑树的平衡二叉树的数据结构实现的一种容器,因为其中所包含的元素的值是唯一的,因此主要用于去重和排序.这篇文章的目的在于探讨和分享如何正确使用std::set实现去重 ...

  6. python redis连接 有序集合去重

    # -*- coding: utf-8 -*- import redisfrom constant import redis_ip, redis_db, redis_pw, logger, redis ...

  7. Stream流的基本介绍以及在工作中的常用操作(去重、排序以及数学运算等)

    平时工作中,我在处理集合的时候,总是会用到各种流操作,但是往往在处理一些较为复杂的集合时,还是会出现无法灵活运用api的场景,这篇文章的目的,主要是为介绍一些工作中使用流时的常用操作,例如去重.排序和 ...

  8. List集合去重的一种方法

    前一段时间们需要对一个List<Model>集合去重,情况是该集合中会出现多个Name属性值相同的,但是其他属性值不同的数据. 在这种情况下,需求要只保留其中一个就好. 我觉得遍历和Has ...

  9. List集合去重的一种方法 z

    需要对一个List<Model>集合去重,情况是该集合中会出现多个Name属性值相同的,但是其他属性值不同的数据. 在这种情况下,需求要只保留其中一个就好. 我觉得遍历和HashSet都不 ...

随机推荐

  1. Java实现 LeetCode 229 求众数 II(二)

    229. 求众数 II 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1). 示例 1: 输入: [3,2, ...

  2. Android如何使用SQLlite数据库

    先写一个类,继承自SQLiteOpenHelper public class MyDatabaseHelper extends SQLiteOpenHelper { //声明一个Context pri ...

  3. java实现输入日期

    /* 从键盘输入一个日期,格式为 yyyy-M-d 要求计算该日期与 1949 年 10 月 1 日距离多少天 例如: 用户输入了:1949-10-2 程序输出:1 用户输入了:1949-11-1 程 ...

  4. Java实现稳定婚姻问题

    1 问题描述 何为稳定婚姻问题? 有一个男士的集合Y = {m1,m2,m3-,mn}和一个女士的计划X = {n1,n2,n3,-,nn}.每一个男士有一个排序的列表,把女士按照潜在的优先级进行排序 ...

  5. Java实现 蓝桥杯 历届试题 矩阵翻硬币

    问题描述 小明先把硬币摆成了一个 n 行 m 列的矩阵. 随后,小明对每一个硬币分别进行一次 Q 操作. 对第x行第y列的硬币进行 Q 操作的定义:将所有第 ix 行,第 jy 列的硬币进行翻转. 其 ...

  6. redis基础知识详解

    一.redis基础知识 1.Redis是什么Redis是一个开源的key-value存储系统. 和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表 ...

  7. k8s-ephemeral和init容器

    截止到目前k8s1.18版本,k8s已经支持四种类型的container:标准容器,sidecar容器,init容器,ephemeral容器. 一:ephemeral容器 1.1.什么是ephemer ...

  8. 关于adb命令的基本使用

    在我们使用adb命令之前,我们要安装一个安卓模拟器(夜神.逍遥.海马王......),这里以夜神安卓模拟器为准(个人推荐,没用过可以使用夜神模拟器). 进入夜神安卓模拟器官网:https://www. ...

  9. Base-64字符串无效,The input is not a valid Base-64 string as it contains a non-base 64 character

    base64规则: * 字符串只可能包含A-Z,a-z,0-9,+,/,=字符* 字符串长度是4的倍数* =只会出现在字符串最后,可能没有或者一个等号或者两个等号 首先,C# 做上传文件的时候,需要替 ...

  10. (七)logback 异步输出日志

    <!-- 异步输出 --> <appender name="ASYNC-INFO" class="ch.qos.logback.classic.Asyn ...