duplicatekey(Java Duplicate key异常解决)

java.lang.IllegalStateException: Duplicate key异常解决 使用场景:在实际应用**中,会常把一个List的查询数据**转为一个Map,那么在这里的 list.stream().collect()其实就是做了这么一件事...

java.lang.IllegalStateException: Duplicate key异常解决

使用场景:在实际应用**中,会常把一个List的查询数据**转为一个Map,那么在这里的 list.stream().collect()其实就是做了这么一件事情,它是java8的stream**实现的它是以type为key,以entity对象为value构成Map。

//查询 List<QuestionCategoryEntity> list = questionCategoryService.selectList(entityWrapper); Map<String, String> categoryMap = list.stream().collect( Collectors.toMap( QuestionCategoryEntity::getCategoryCode, QuestionCategoryEntity::getCategoryName ) );12345678910

在有些业务场景中会出现如下异常:Duplicate key ,map的key重复,如上的 QuestionCategoryEntity::getCategoryCode。

java.lang.IllegalStateException: Duplicate key 专项考试 at java.util.stream.Collectors.lambda$throwingMerger$0(Collectors.java:133) at java.util.HashMap.merge(HashMap.java:1245) at java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1320) at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:1**) at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)... ...1234567

解决**:使用toMap()的重载**,如果已经存在则不再修改,直接使用上一个数据。

//查询 List<QuestionCategoryEntity> list = questionCategoryService.selectList(entityWrapper); Map<String, String> categoryMap = list.stream().collect( Collectors.toMap( QuestionCategoryEntity::getCategoryCode, QuestionCategoryEntity::getCategoryName, (entity1, entity2) -> entity1 ) );1234567891011

等效于

questionCategoryService.selectList(entityWrapper); Map<String, String> categoryMap = list.stream().collect( Collectors.toMap( QuestionCategoryEntity::getCategoryCode, QuestionCategoryEntity::getCategoryName, (entity1, entity2) { return entity1 } ) );12345678910111213

(entity1, entity2) -> entity1 这里使用的箭头函数,也就是说当出现了重复key的数据时,会回调这个**,可以在这个**里处理重复Key数据问题,小编这里**点,直接使用了上一个数据。

完毕

Java Duplicate key异常解决

  • 发表于 2022-11-21 16:34
  • 阅读 ( 229 )
  • 分类:互联网

0 条评论

请先 登录 后评论
白帆春
白帆春

566 篇文章

你可能感兴趣的文章

相关问题