我有以下情况
Map<Key, ListContainer> map;
public class ListContainer {
List<AClass> lst;
}
我必须合并所有列表lst
从Map
映射的ListContainer
对象。
public static void main(String[] args) {
List<AClass> alltheObjectsAClass = map.values().stream(). // continue....
}
知道如何使用Java8流API吗?
上面已经给出了答案,但这里有另一种方法可以采用。我找不到我改编这篇文章的原始帖子,但这里的代码是为了回答你的问题。如上所述,flatMap()函数是您希望在Java8中使用的函数。您可以将它放入一个实用程序类中,只需调用“RandomUtils.combine(list1,list2,…”你会得到一个包含所有值的列表。只需小心使用通配符——如果您想要一个不太通用的方法,您可以更改它。您还可以为集合修改它—在集合上使用flatMap()时,您只需小心,以避免由于集合接口的性质而导致equals/hashCode方法的数据丢失。
编辑-如果对Set接口使用这样的通用方法,并且碰巧使用了Lombok,请确保了解Lombok如何处理equals/hashCode生成。
/**
* Combines multiple lists into a single list containing all elements of
* every list.
*
* @param <T> - The type of the lists.
* @param lists - The group of List implementations to combine
* @return a single List<?> containing all elements of the passed in lists.
*/
public static <T> List<?> combine(final List<?>... lists) {
return Stream.of(lists).flatMap(List::stream).collect(Collectors.toList());
}
备选方案:流。concat()
Stream.concat(map.values().stream(), listContainer.lst.stream())
.collect(Collectors.toList()
我认为flatMap()
就是你要找的。
例如:
List<AClass> allTheObjects = map.values()
.stream()
.flatMap(listContainer -> listContainer.lst.stream())
.collect(Collectors.toList());
问题内容: 我有以下情况 我已经合并所有列表从从对象地图。 知道如何使用Java 8流API吗? 问题答案: 我想这就是您要寻找的。 例如:
我有两个(或更多)
我试图使用
我有以下课程 我正在尝试按贡献者名称和角色名称对ResourceContributor列表进行排序。到目前为止,我得到的是: 我试过使用thenComparing,但还不知道如何使用它。
我需要筛选我的对象列表: 以便将具有相同和的所有对象合并到具有以下属性的单个对象中: 作为所有值的和 作为所有值的字符串级联 所以结果是: Java 8中的溪流有可能做到吗? 我尝试了几种方法(例如,还使用),但我没有找到解决方案! 谢谢 编辑: 下面是我尝试的: 但由于某种原因,在计算过程中,我在上得到了,无论如何,我非常肯定这不是一个有效的解决方案。
我有一个这样的方法: 此方法需要以如下字符串形式返回3个最昂贵项目的产品ID:“item1,item2,item3”。我应该只能使用溪流,我被困在这里了。我应该能够按值对项目进行排序,然后获得产品ID,但我似乎无法使其正常工作。 编辑: 产品ID位于入口类中