java8 list 转Map:
1.1 public Map<Long, Account> getIdAccountMap(List<Account> accounts) {
    return accounts.stream().collect(Collectors.toMap(Account::getId, account -> account));
}
▲ account -> account是一个返回本身的lambda表达式,其实还可以使用Function接口中的一个默认方法 Function.identity(),这个方法返回自身对象,更加简洁:

1.2 重复key的情况。(key 不是主键)
在list转为map时,作为key的值有可能重复,这时候流的处理会抛出个异常:Java.lang.IllegalStateException:Duplicate key。
这时候就要在toMap方法中指定当key冲突时key的选择。(这里是选择第二个key覆盖第一个key):
public Map<String, Account> getNameAccountMap(List<Account> accounts) {
    return accounts.stream().collect(Collectors.toMap(Account::getUsername, Function.identity(), (key1, key2) -> key2));
}    
1.3 Map<Long, ExamUserAnswerDetailEntity> examUserAnswerDetailMap = examUserAnswerDetails.stream()
                .collect(HashMap::new,(m,s)->m.put(s.getQuestionId(),s),HashMap::putAll);
            
2. public Map<Long, String> getIdNameMap(List<Account> accounts) {
    return accounts.stream().collect(Collectors.toMap(Account::getId, Account::getUsername));
}

3. Map<Long, List<ExamUserAnswerDetailEntity>> ExamUserAnswerDetailEntityMap = list.stream().collect(groupingBy(ExamUserAnswerDetailEntity::getAnswerId));                
   Map<Long, List<ExamUserAnswerEntity>> examUserAnswerEntityMap = examUserAnswerEntityList.stream().collect(Collectors.groupingBy(ExamUserAnswerEntity::getExamId));

java8 获取列表中某字段组成新的list:

List<Long> examIds = examUserEntities.stream().map(ExamUserEntity::getExamId).collect(Collectors.toList());

java8 list 转Map的各种写法相关推荐

  1. Mybatis的Mapper方法中传递map参数的写法

    Mybatis的Mapper方法中传递map参数的写法 当我们在进行数据分页查询时,如果想让Mybatis的分页查询返回Map对象的集合,我们需要在查询的方法上使用单个参数或者使用Map对象作为参数进 ...

  2. Java8 stream filter map

    java8 中的stream filter map 组合使用能很好的代替for 循环去处理逻辑,而且代码简单明了 public static void main(String[] args) {Lis ...

  3. java8中的map与flatmap区别

    map:只能返回一个值 flatmap:返回多个值 new ArrayList().stream().map(x -> x);//返回一个 new ArrayList().stream().fl ...

  4. JAVA8中Set排序四种写法

    第一种,平常的写法: public class App {public static void main( String[] args ) {Set<String> set = new H ...

  5. Java8新特性——Map的新方法

    今天是高考的日子,是大四师兄师姐答辩毕业的日子.一代又来,一代又去.好久没写博客,借此特殊日子整理一下前不久学java8新特性时写的代码,留下痕迹.(本博客的代码根据 java8新特性教程 学习整理, ...

  6. 【JAVA8】Set排序四种写法-倒序

    工作中遇到,写了很久以前的写法,师兄给了很多建议,于是整理了一下.孔子曰:"你知道茴香豆的茴字有几种写法吗?" 首先,要知道Set的特性是有序不重复,Jdk中使用了HashMap的 ...

  7. java8 stream流 .map

    java8 .map的使用 大家好,我是菜鸟!我胡汉三又来了 ...最近在看流 ,对.map 的使用一知半解的,甚是难过 ,特此一记!!! what is .map ? 用大白话讲就是从一个流到另一个 ...

  8. java8 对象转map时重复key Duplicate key 该如何解决?

    我们在利用java8  Lambda 表达式将集合中对象的属性转成Map时就会出现 Duplicate key  xxxx , 说白了也就是key 重复了!案例如下: @Data @NoArgsCon ...

  9. java8 list转map

    List<T>转Map<S,T> Map<String,DemoEntity> map = stats.stream().collect(Collectors.to ...

最新文章

  1. Linux平台Java调用so库-JNI使用例子
  2. leetcode算法题--不用加减乘除做加法
  3. mac 远程桌面提示: 证书或相关链无效
  4. RDP(远程桌面)优化
  5. sicily 1034. Forest
  6. JSESSIONID的简单说明
  7. linux中 tar 报参数列表过长,四种解决”Argument list too long”参数列表过长的办法...
  8. 操作系统--死锁避免(银行家算法)
  9. 两个人投票的c语言程序,设计网页投票器(二)《精通Unix下C语言编程与项目实践》之十...
  10. python图标的演变_Python3 生成icon图标
  11. Spiking-YOLO : 前沿!脉冲神经网络在目标检测的首次尝试 | AAAI 2020
  12. python集合全排列_python——全排列数的生成方式
  13. VIVADO时序约束及STA基础
  14. redis mysql 数据长度_如何统计Redis中各种数据的大小
  15. SQL之SQL99语法 没错就这么简单
  16. html+js的lrc歌词同步播放器
  17. 输入框有值无法输入问题
  18. JavaScript变量
  19. PTA Python习题 身份证号码输出性别与出生日期
  20. 导致计算机科学硕士和计算机科学理学硕士,诺丁汉大学计算机科学理学硕士研究生offer一枚...

热门文章

  1. 产品总监晋升之路(1):选育育留之产品经理胜任力模型
  2. dpkg软件包管理工具
  3. 上海亚商投顾:市场呈现窄幅震荡 新能源类行业受热炒
  4. 基于enc28j60的学习心得
  5. EasyExcel 单元格背景颜色、字体颜色使用2种设置颜色方法(IndexedColors中定义的颜色,自定义RGB颜色)实现
  6. 影响中国软件开发的20人
  7. 巨杉数据库入围 IDC Innovator榜单,获评分布式数据库创新者
  8. IDEA ctrl+alt+L 格式化快捷键不起作用
  9. oracle 表收缩,Oracle在线收缩表——shrink space
  10. A.一个部族,一个民族,一个弗雷尔卓德(素数筛+线段树)