jdk8流list转Map
- /**
- *
- */
- package com.chuanglan.demo;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- import java.util.Map;
- import java.util.concurrent.ConcurrentHashMap;
- import java.util.function.Function;
- import java.util.stream.Collectors;
- /**
- * @author Maq.
- * @createTime 2019年10月29日 下午4:33:38
- *
- */
- public class ListToMapDemo {
- public static void main(String[] args) {
- List<Student> list = new ArrayList<>(
- Arrays.asList(
- new Student("张三", 18, "b1"),
- new Student("王二", 20, "b2"),
- new Student("李四", 18, "b3")
- )
- );
- // 源码
- // public static <T, K, U>
- // Collector<T, ?, Map<K,U>> toMap(Function<? super T, ? extends K> keyMapper,
- // Function<? super T, ? extends U> valueMapper) {
- // return toMap(keyMapper, valueMapper, throwingMerger(), HashMap::new);
- // }
- Map<String, String> map = list.stream().collect(Collectors.toMap(Student::getName, Student::getGrade));
- Map<String, Student> map2 = list.parallelStream().collect(Collectors.toMap(studen->{return studen.getName();}, stude->{return stude;})); //或者
- //Map<String, Student> map2 = list2.stream().collect(Collectors.toMap(Student::getName, Function.identity()));
- Map<String, Integer> map3 = list.stream().collect(Collectors.toMap(item -> item.getName(), item -> item.getAge(),(oldVal, currVal) -> currVal,ConcurrentHashMap::new));
- Map<String, Integer> map6 = list.stream().collect(Collectors.toMap(item -> "111", item ->2,(oldVal, currVal) -> currVal,ConcurrentHashMap::new));
map6.forEach( (k ,v)->{
System.out.println("k6: " + k + " v6:" + v);
});
- map.forEach( (k ,v)->{
- System.out.println("k: " + k + " v:" + v);
- });
- map2.forEach( (k ,v)->{
- System.out.println("k: " + k + " v:" + v.getAge());
- });
- //key冲突 错误信息java.lang.IllegalStateException: Duplicate key b3
- List<Student> list2 = new ArrayList<>(
- Arrays.asList(
- new Student("张三", 18, "b1"),
- new Student("王二", 20, "b2"),
- new Student("李四", 18, "b3"),
- new Student("李四", 18, "b4")
- )
- );
- Map<String, Student> map4 = list2.stream().collect(Collectors.toMap(Student::getName, Function.identity(),
- (existing, replacement) -> existing)); //这样配置的话,发生冲突是existing会替代replacement
- //多个属性为key
- Map<String, Student> map5 = list2.stream().collect(Collectors.toMap(student -> student.getName()+student.getAge() , student->student, (existing, replacement) -> existing)); //这样配置的话,发生冲突是existing会替代replacement
- map4.forEach( (k ,v)->{
- System.out.println("k: " + k + " v:" + v.getGrade());
- });
- map5.forEach( (k ,v)->{
- System.out.println("k: " + k + " v:" + v.getGrade());
- });
- }
- }
jdk8流list转Map的更多相关文章
- jdk8 流操作
二.流 2.1 流介绍 流是Java API的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现).就现在来说,你可以把它们看成遍历数据集的高级迭代器.此外,流还可以 ...
- POJ 1087 最大流裸题 + map
A Plug for UNIX Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15597 Accepted: 5308 ...
- Java流中的map算子和flatMap算子的区别
map算子和flatMap算子 map和flatMap都是映射(转换),那么他们之间究竟有什么区别呢? 1.我们先简单了解下map算子: @org.junit.Test public void tes ...
- 好记性-烂笔头:JDK8流操作
1):对象 List<User> 转 Map<String,Object> 案例如下: public class User { private Integer id; priv ...
- jdk8的特性stream().map()
转: https://blog.csdn.net/sanchan/article/details/70753645 java8的optional的使用: http://www.jdon.com/ide ...
- jdk8 新特性stream().map()
1.大写字符串列表 1.1 简单的Java示例将Strings列表转换为大写 TestJava8.java package com.mkyong.java8; import java.util.Arr ...
- jdk8对象集合转map集合
package koukay.Controller.Controllers; import koukay.Portal.webservices.Entity.User; import com.fast ...
- jdk8的stream流式计算的操作
jdk8之后增加了流式计算,现在根据学习了流式计算,并把过程记录下来: Person.java的bean package com.zhang.collectordemo; /** * @program ...
- jdk8可重复key的Map: IdentityHashMap
编写一个多条件过滤功能时,想使用map作为过滤条件的容器,由于存在同一健匹配多个值的情况,所以就发现了jdk8的新的map:IdentityHashMap.使用它完美解决了我的问题. 对比Identi ...
随机推荐
- 配置传统vlan间路由
S1#SH RUN spanning-tree mode pvst ! interface FastEthernet0/1 switchport access vlan 10 switchport m ...
- 【Python开发】使用python中的matplotlib进行绘图分析数据
matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. 它的文档相当完备, ...
- pubwin2009 备份文件恢复
local_db.DBBak 恢复注意: 1.先安装好全新server -> 用SQLManager连接数据库 连接时右键编辑 SQLSERVER注册属性 默认sql连接 帐号netcafe ...
- aliyun挂载oss
配置 oss 挂载 阿里云 ecs 按照ossfs工具:yum install http://gosspublic.alicdn.com/ossfs/ossfs_1.80.5_centos6.5_x8 ...
- supervisor管理superset
参考: https://blog.51cto.com/qiangsh/2153185 安装supervisor: pip install supervisor 停止supervisor管理的服务: [ ...
- luoguP2822-组合数问题(基础DP)
题目链接:https://www.luogu.org/problemnew/show/P2822 题意:输入T和k,有T组询问.每组询问输入n.m,求C(i,j)能模k的个数(0<=i<= ...
- Oracle密码过期(the password has expired)
1.进入sqlplus模式--sqlplus / as sysdba; 2.查看用户密码的有效期设置(一般默认的配置文件是DEFAULT) SELECT * FROM dba_profiles WHE ...
- 转-性能优化中CPU、内存、磁盘IO、网络性能的依赖
转自:https://www.cnblogs.com/Javame/p/3665565.html 系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估. ...
- Fiddler-打断点(bpu)
一.断点 1.为什么要打断点? 比如一个购买的金额输入框,输入框前端做了限制大于100,那么我们测试的时候,需要测试小于100的情况下.很显然前端只能输入大于100的.这时我们可以先抓到接口,修改请求 ...
- NIKKEI Programming Contest 2019-2 Task E. Non-triangular Triplets
$\require{enclose}$ 必要条件 一方面 $\sum_{i=1}^{N}(a_i + b_i) \le \sum_{i=1}^{N} c_i \implies 2\sum_{i=1}^ ...