简体   繁体   English

如何使用Java 8流按列表过​​滤地图?

[英]How to filter Map by a List using Java 8 stream?

I want to change the following code to use Stream s, but I didn't find a similar example. 我想将以下代码更改为使用Stream ,但是没有找到类似的示例。

Map<Integer, DspInfoEntity> dspInfoEntityMap = dspInfoService.getDspInfoEntityMap();
List<DspInfoEntity> dspInfoList = new ArrayList<>();
for (AppLaunchMappingDto appLaunchMappingDto : appLaunchMappingDtoList) {
    int dspId = appLaunchMappingDto.getDspId();
    if (dspInfoEntityMap.containsKey(dspId)) {
        dspInfoList.add(dspInfoEntityMap.get(dspId));
    }
}

I think it could be like this: 我认为可能是这样的:

List<DspInfoEntity> dspInfoList = dspInfoEntityMap.entrySet().stream().filter(?).collect(Collectors.toList());

Your loop filters the appLaunchMappingDtoList list, so you should stream over the List, not the Map: 您的循环会过滤appLaunchMappingDtoList列表,因此您应流appLaunchMappingDtoList列表,而不是Map:

List<DspInfoEntity> dspInfoList = 
    appLaunchMappingDtoList.stream() // Stream<AppLaunchMappingDto>
                           .map(AppLaunchMappingDto::getDspId) // Stream<Integer>
                           .map(dspInfoEntityMap::get) // Stream<DspInfoEntity>
                           .filter(Objects::nonNull)
                           .collect(Collectors.toList()); // List<DspInfoEntity>

or (if your Map may contain null values and you don't want to filter them out): 或(如果您的Map可能包含空值,并且您不想过滤掉它们):

List<DspInfoEntity> dspInfoList = 
    appLaunchMappingDtoList.stream() // Stream<AppLaunchMappingDto>
                           .map(AppLaunchMappingDto::getDspId) // Stream<Integer>
                           .filter(dspInfoEntityMap::containsKey)
                           .map(dspInfoEntityMap::get) // Stream<DspInfoEntity>
                           .collect(Collectors.toList()); // List<DspInfoEntity>

如何转换列表<object>至 Map<k, v> 使用 java stream<div id="text_translate"><p> 我想将List&lt;ObjectInList&gt;转换为Map&lt;K, V&gt;</p><pre> class ObjectInList { List&lt;Long&gt; listWithLong; Map&lt;String, Object&gt; dataMap; // there is 'id' key, and i want to use this id as key in map to be converted }</pre><p> 新的 map 格式如下</p><pre>String type; // this type is value of dataMap. List&lt;Long&gt; contents</pre><p> List&lt;Object&gt;中的每个 Object 都可以有重复的类型</p><p>例如</p><pre>///////// before converted //////////// [ { list: [1,2,3], dataMap: { type: "a", } }, { list: [4,5,6], dataMap: { type: "b", } }, { list: [7,8], dataMap: { type: "a", } }, ] ///////////// after converted ////////// { "a": [1,2,3,7,8], "b": [4,5,6] }</pre></div></k,></object> - How to convert LIst<Object> to Map<K, V> with using java stream

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何使用java流过滤地图地图 - How to filter map of map using java stream Java8:如何通过流过滤List值的映射 - Java8 : How to filter a map of List value via stream 用于 Map 的 Java 8 流过滤器<String, List<Object> &gt; - Java 8 stream filter for Map<String, List<Object>> 如何使用filter和map等Stream API方法重写一个Java程序? - How to rewrite a Java program using Stream API methods, such as filter and map? 如何使用 Java 流 api 过滤地图? - How to filter a map with Java stream api? 如何使用Java 8流过滤List并从值数组开始 - How to filter a List using Java 8 stream and startwith array of values 如何在不使用 for 循环的情况下通过字符串列表过滤 java 流 - How filter java stream by a list of strings without using a for loop 如何使用流将列表转换为带有索引的地图 - Java 8? - How to convert List to Map with indexes using stream - Java 8? 如何转换列表<object>至 Map<k, v> 使用 java stream<div id="text_translate"><p> 我想将List&lt;ObjectInList&gt;转换为Map&lt;K, V&gt;</p><pre> class ObjectInList { List&lt;Long&gt; listWithLong; Map&lt;String, Object&gt; dataMap; // there is 'id' key, and i want to use this id as key in map to be converted }</pre><p> 新的 map 格式如下</p><pre>String type; // this type is value of dataMap. List&lt;Long&gt; contents</pre><p> List&lt;Object&gt;中的每个 Object 都可以有重复的类型</p><p>例如</p><pre>///////// before converted //////////// [ { list: [1,2,3], dataMap: { type: "a", } }, { list: [4,5,6], dataMap: { type: "b", } }, { list: [7,8], dataMap: { type: "a", } }, ] ///////////// after converted ////////// { "a": [1,2,3,7,8], "b": [4,5,6] }</pre></div></k,></object> - How to convert LIst<Object> to Map<K, V> with using java stream 使用Java 8 Stream API过滤嵌套列表 - Filter on nested list using Java 8 Stream API
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM