stream如何转list至map
时间: 2023-10-20 20:36:12 浏览: 102
详解Java8新特性Stream之list转map及问题解决
5星 · 资源好评率100%
stream可以通过使用collect方法将List转换为Map。使用Collectors.toMap方法可以实现这个转换。具体的代码如下所示:
List<TestCase> testCaseList = ...; // 假设有一个TestCase类型的List
Map<String, TestCase> testCaseMap = testCaseList.stream()
.collect(Collectors.toMap(key -> key.getId(), value -> value));
这段代码将List中的每个元素按照指定的key和value的映射关系,转换为一个Map。其中key可以通过lambda表达式的方式指定,value则直接使用元素本身。这样就可以将List转换为以元素的id作为key,元素本身作为value的Map。
需要注意的是,如果List中的元素存在重复的key,会抛出一个IllegalStateException异常。为了解决这个问题,可以在toMap方法中传入一个合并的函数,用于指定对于重复的key应该如何处理。例如,可以选择保留第一个key所对应的value,代码如下所示:
Map<String, TestCase> testCaseMap = testCaseList.stream()
.collect(Collectors.toMap(key -> key.getId(), value -> value, (key1, key2) -> key1));
这样就可以避免重复key引起的异常,并保留第一个key所对应的value。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
阅读全文