import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors; private static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) {
Map<Object, Boolean> seen = new ConcurrentHashMap<>();
return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
facultyRetList = facultyList.stream().filter(distinctByKey(Faculty::getId)).collect(Collectors.toList());

 更多相关操作如下

import com.example.springdemo.testFunc.pojo.Student;
import com.example.springdemo.testFunc.pojo.User; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import static java.util.stream.Collectors.toList; /**
* @Package:com.example.springdemo.testFunc
* @Description: $star$
* @author cc x
* @date 2021-9-6 - 10:06
* @version:V1.0
* @Copyright: 2021 Inc. All rights reserved.
*/
public class ListOperate { public static void main(String[] args) { List<String> list1 = new ArrayList();
List<String> list2 = new ArrayList(); // 交集
List<String> intersection = list1.stream().filter(item -> list2.contains(item)).collect(toList());
System.out.println("---得到交集 intersection---");
intersection.parallelStream().forEach(System.out::println); // 差集 (list1 - list2)
List<String> reduce1 = list1.stream().filter(item -> !list2.contains(item)).collect(toList());
System.out.println("---得到差集 reduce1 (list1 - list2)---");
reduce1.parallelStream().forEach(System.out::println); // 差集 (list2 - list1)
List<String> reduce2 = list2.stream().filter(item -> !list1.contains(item)).collect(toList());
System.out.println("---得到差集 reduce2 (list2 - list1)---");
reduce2.parallelStream().forEach(System.out::println); // 并集
// List<String> listAll = list1.parallelStream().collect(toList());
// List<String> listAll2 = list2.parallelStream().collect(toList());
// listAll.addAll(listAll2);
System.out.println("---得到并集 listAll---"); List<Student> list = new ArrayList<>();
Collections.addAll(list,
new Student("张三"),
new Student("李四"),
new Student("王五"),
new Student("张三"),
new Student("李四"),
new Student("赵六")); System.out.println("去重之前: ");
System.out.println("list = " + list);
// 吧所有的name 拼成一个List
List<String> pa = list.stream().map(Student::getName).collect(toList());
System.out.println("获取对象单一属性转换为List: ");
pa.forEach(System.out::println); Set<Student> set = new TreeSet<>(Comparator.comparing(Student::getName));
set.addAll(list);
System.out.println("去重之后 =》 1 : ");
set.forEach(System.out::println);
testDisComSort(); // 尝试 steam 的 <wiz_tmp_highlight_tag class="cm-searching">lamada 操作 User user1 = new User(5, "aa");
User user2 = new User(2, "ba");
User user3 = new User(3, "ac");
User user4 = new User(1, "aad");
User user5 = new User(4, "asd");
List<User> userList = Arrays.asList(user1, user2, user3, user4, user5);
System.out.println("初始数据");
userList.forEach(System.out::println);
//获取所有ID集合
List<Integer> idList = userList.stream().map(User::getId).collect(Collectors.toList());
System.out.println("获取所有ID集合" + idList);
//排序ID
List<User> userList1 = userList.stream().sorted(Comparator.comparingInt(User::getId)).collect(Collectors.toList());
System.out.println("排序ID" + userList1);
//分组
Map<String, Long> map = userList.stream().collect(Collectors.groupingBy(User::getName, Collectors.counting()));
System.out.println("分组" + map);
//获取id大于2的
List<User> userList2 = userList.stream().filter(user -> user.getId() > 2).collect(Collectors.toList());
System.out.println("获取id大于2的" + userList2);
//获取最大
Integer id = userList.stream().map(User::getId).max(Integer::compareTo).get();
System.out.println("获取最大" + id);
//获取最小
Integer id1 = userList.stream().map(User::getId).min(Integer::compareTo).get();
System.out.println("获取最小" + id1);
//获取id数量
long count = userList.stream().map(User::getId).count();
System.out.println("获取id数量" + count);
//总和
int sum = userList.stream().mapToInt(User::getId).sum();
System.out.println("总和" + sum);
//获取平均值
double d = userList.stream().mapToInt(User::getId).average().getAsDouble();
//匹配findAny/allMatch/noneMatch多用来判断
User user = userList.stream().findAny().get();
//获取第一个对象
User user6 = userList.stream().findFirst().get();
System.out.println("获取第一个对象" + user6);
//将名字全转换为大写
List<String> list4 = userList.stream().map(User::getName).map(String::toUpperCase).collect(Collectors.toList());
System.out.println("将名字全转换为大写");
list4.forEach(System.out::println);
//获取忽略第一个并取前几条数据
List<User> list14 = userList.stream().skip(1).limit(2).collect(Collectors.toList());
System.out.println("获取忽略第一个并取前几条数据");
list14.forEach(System.out::println); //去重
List<User> collect = userList.stream().distinct().collect(Collectors.toList());
System.out.println("去重");
collect.forEach(System.out::println); } public static void testDisComSort() {
//定义一个100元素的集合,包含A-Z
List<String> list = new LinkedList<>();
for (int i = 0; i < 100; i++) {
list.add(String.valueOf((char) ('A' + Math.random() * ('Z' - 'A' + 1))));
}
System.out.println(list);
//统计集合重复元素出现次数,并且去重返回hashmap
Map<String, Long> map = list.stream().
collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
System.out.println(map);
//由于hashmap无序,所以在排序放入LinkedHashMap里(key升序)
Map<String, Long> sortMap = new LinkedHashMap<>();
map.entrySet().stream().sorted(Map.Entry.comparingByKey()).
forEachOrdered(e -> sortMap.put(e.getKey(), e.getValue()));
System.out.println(sortMap);
//获取排序后map的key集合
List<String> keys = new LinkedList<>();
sortMap.entrySet().stream().forEachOrdered(e -> keys.add(e.getKey()));
System.out.println(keys);
//获取排序后map的value集合
List<Long> values = new LinkedList<>();
sortMap.entrySet().stream().forEachOrdered(e -> values.add(e.getValue()));
System.out.println(values);
}}

  

Lamada List 去重及其它操作示例的更多相关文章

  1. C#文件的拆分与合并操作示例

    C#文件的拆分与合并操作示例代码. 全局变量定义 ;//文件大小 //拆分.合并的文件数 int count; FileInfo splitFile; string splitFliePath; Fi ...

  2. java-redis集合数据操作示例(三)

    redis系列博文,redis连接管理类的代码请跳转查看<java-redis字符类数据操作示例(一)>. 一.集合类型缓存测试类 public class SetTest { /** * ...

  3. java-redis列表数据操作示例(二)

    接上篇博文<java-redis字符类数据操作示例(一)>,redis连接管理类的代码请跳转查看. 一.列表类型缓存测试类 public class ListTest { /** * 主测 ...

  4. 文件操作示例脚本 tcl

    linux 下,经常会对用到文件操作,下面是一个用 tcl 写的文件操作示例脚本: 其中 set f01 [open "fix.tcl" w] 命令表示 打开或者新建一个文件“fi ...

  5. phpExcel 操作示例

    片段 1 片段 2 phpExcel 操作示例 <?php //写excel //Include class require_once('Classes/PHPExcel.php'); requ ...

  6. Go interface 操作示例

    原文链接:Go interface操作示例 特点: 1. interface 是一种类型 interface 是一种具有一组方法的类型,这些方法定义了 interface 的行为.go 允许不带任何方 ...

  7. Hudi 数据湖的插入,更新,查询,分析操作示例

    Hudi 数据湖的插入,更新,查询,分析操作示例 作者:Grey 原文地址: 博客园:Hudi 数据湖的插入,更新,查询,分析操作示例 CSDN:Hudi 数据湖的插入,更新,查询,分析操作示例 前置 ...

  8. 【Azure Developer】使用 Microsoft Graph API 获取 AAD User 操作示例

    问题描述 查看官方文档" Get a user " , 产生了一个操作示例的想法,在中国区Azure环境中,演示如何获取AAD User信息. 问题解答 使用Microsoft G ...

  9. C++图结构的图结构操作示例

    示例代码: /* By qianshou 2013/10/5明天就要开学了~哎~ */ #include<iostream> using namespace std; /********* ...

  10. Jquery cookie操作示例,写入cookie,读取cookie,删除cookie

    <html> <head> <meta name="viewport" content="width=device-width" ...

随机推荐

  1. TS 导入导出那些事

    前言 最近用 TypeScript 写 npm 包,各种模块.命名空间.全局定义等等扰得我睡不着觉. 我便苦心研究,总结了几个比较冷门的,国内貌似基本上找不到资料的导入导出用法,顺便在其中又插入一些不 ...

  2. 升级:In-Place Upgrade升级MySQL5.6.26

    升级需谨慎,事前先备份 MySQL升级的实质是对数据字典的升级,数据字典有:sys.mysql.information_schema.performance_schema . MySQL升级的两种方式 ...

  3. 在smt贴片加工中手工焊接和机器焊接的区别

    在smt贴片加工领域,都需要将电子元件贴装在pcb板表面并进行焊接的,常用的焊接方式分为两种:手动焊接和全自动机器焊接,而常用的焊接机器有回流焊机和波峰焊机,那你知道他们的区别是什么吗?安徽英特丽带你 ...

  4. 自定义Python版本ESL库访问FreeSWITCH

    环境:CentOS 7.6_x64Python版本:3.9.12FreeSWITCH版本 :1.10.9 一.背景描述 ESL库是FreeSWITCH对外提供的接口,使用起来很方便,但该库是基于C语言 ...

  5. async/await中的promise返回错误reject

    https://blog.csdn.net/qq_42543244/article/details/123423894 最近在学 node ,之前对 async/await 和 promise 略懂, ...

  6. Hardhat 开发框架 - Solidity开发教程连载

    Decert.me 要连载教程了, <Solidity 开发教程> 力求系统.深入的介绍 Solidity 开发, 同时这是一套交互式教程,你可以实时的修改教程里的合约代码并运行. 本教程 ...

  7. 【python】使用爬虫爬取动漫之家漫画全部更新信息

    本篇仅在于交流学习 网站名称为: https://manhua.dmzj.com/ 1.首先将相应的库导入: import requests from lxml import etree 2.确定漫画 ...

  8. 超实用的Go语言基础教程,让你快速上手刷题!!

    背景 工欲善其事,必先利其器.掌握Go的基础语法还不够,还需要勤加练习,修习"外功",才能达到出奇制胜的效果. 在大致了解Go语言的基本语法后,我就迫不得已地想使用这门语言.可是我 ...

  9. 2020-10-30:给定一个正数数组arr(即数组元素全是正数),找出该数组中,两个元素相减的最大值,其中被减数的下标不小于减数的下标。即求出: maxValue = max{arr[j]-arr[i] and j >= i}?

    福哥答案2020-10-30:1.双重遍历法.2.一次遍历法.golang代码如下: package main import "fmt" const INT_MAX = int(^ ...

  10. 2021-02-22:一个象棋的棋盘,然后把整个棋盘放入第一象限,棋盘的最左下角是(0,0)位置,那么整个棋盘就是横坐标上9条线、纵坐标上10条线的区域。给你三个 参数 x,y,k。返回“马”从(0,0)位置出发,必须走k步。最后落在(x,y)上的方法数有多少种?

    2021-02-22:一个象棋的棋盘,然后把整个棋盘放入第一象限,棋盘的最左下角是(0,0)位置,那么整个棋盘就是横坐标上9条线.纵坐标上10条线的区域.给你三个 参数 x,y,k.返回"马 ...