我有一个包含两个重要属性的Foo
列表,Bar
和Baz-Baz
。实例可以共享Bar
值,但具有唯一的Baz
s。
我想把这个List转换成一个Map,这样共享一个Bar的所有实例的唯一的Baz
都被放在映射到那个共享的Bar
的Set中。
Map<Bar, Set<Baz>> m = new HashMap<>();
for (Foo foo : fooRepository.findAll()) {
if (m.containsKey(foo.bar)) {
m.get(foo.bar).add(foo.baz);
} else {
Set<Baz> set = new HashSet<>();
set.add(foo.baz);
m.put(foo.bar, set);
}
}
我自己的功能印章还没有被证明能胜任这项任务。我试图同时减少
和收集
List,但是当试图将不同的参数实现为lambdas时,被类型问题绊倒了。
尝试使用Collect
m = fooRepository.findAll().stream().collect(new HashMap<Bar, Set<Baz>>(), (m, foo)->m.merge(Foo::getBaz, s->s.add(foo.getBar()));
不完整,编译器无法确定m或foo和Foo::getBaz的类型。
Reduce不起作用,因为它不允许累加器与元素的值不同。
如果您想要一个Multimap
而不是Map
,您可以使用Eclipse集合中的Collectors2.toSetMultimap
。
SetMultimap<Bar, Baz> multimap = fooRepository.findAll()
.stream()
.collect(Collectors2.toSetMultimap(Foo::getBar, Foo::getBaz));
注意:我是Eclipse集合的提交者。
Map<Bar, Set<Baz>> m = fooRepository.findAll()
.stream()
.collect(Collectors.groupingBy(Foo::getBar,
Collectors.mapping(Foo::getBaz, Collectors.toSet())));
本文向大家介绍Java 将Map映射转换为 List,包括了Java 将Map映射转换为 List的使用技巧和注意事项,需要的朋友参考一下 首先,让我们创建一个Java Map并初始化- 现在,将Map转换为List- 示例 以下是在Java中将Maps转换为List的程序- 输出结果
我有一个由世界各地的城市组成的lat/lon值的坐标列表。我已经拼凑了一张美国的SVG地图,我想把世界上的主要城市作为别针显示在SVG地图的顶部。到目前为止,我已经弄清楚了,我所显示的地图投影是美国的墨卡托投影,那么下一步是,我如何获得每个城市地图的x/y坐标?一旦我从lat/lon得到墨卡托投影,那么如何将它转换为x/y值,然后根据地图的大小转换为相对x/y值呢?
问题内容: 我正在寻找有关如何在Python中将一个范围值转换为另一范围值的想法。我正在从事硬件项目,正在从可返回一定范围值的传感器读取数据,然后使用该数据来驱动需要不同范围值的执行器。 例如,假设传感器返回的值在1到512的范围内,并且执行器由5到10的值驱动。我想要一个函数,我可以传递一个值和两个范围并取回该值映射到第二个范围。如果这样的函数被命名,则可以这样使用: 在此示例中,我希望输出为,
我是Mapstruct的新手。我试图将列表转换为地图,我在网上搜索了很多,我有一些解决方案,比如它还没有在mapstruct中实现。如果有人能提供一些替代解决方案,我将很高兴。所有我希望转换映射如下: 现在是否可以使用MapStruct来实现?
我试图使用lambda中的函数创建一个映射。现在我面临的问题是我无法将列表转换为特定情况下的映射 我需要在这里使用方法引用吗? 下面是方法
我刚刚开始看Java8,为了尝试lambdas,我想我应该尝试重写我最近写的一个非常简单的东西。我需要将一个字符串到列的映射转换为另一个字符串到列的映射,其中新映射中的列是第一个映射中列的防御副本。列具有复制构造函数。到目前为止我得到的最接近的数据是: 但我相信一定有更好的方法来做这件事,我会很感激一些建议。