我有一张这样的清单
List<Objeto> myList = new ArrayList<Objeto>();
Objeto o1 = new Objeto("1", "bbb");
myList.add(o1);
Objeto o2 = new Objeto("1", "rrrr");
myList.add(o2);
Objeto o3 = new Objeto("2", "eee");
myList.add(o3);
Objeto o4 = new Objeto("2", "wwww");
myList.add(o4);
Objeto o5 = new Objeto("3", "iiii");
myList.add(o5);
其中Objecto是此类型的对象
class Objeto{
private String contentId;
private String address;
Objeto(String id, String address){
this.contentId = id;
this.address = address;
}
//接球手和接球手
}
我想将列表合并成如下的哈希图
(1, {"bbb","rrrr"})
(2, {"eee","wwww"})
(3, {"iiii"})
我可以使用java 8 lambda来实现它吗?或者通过任何其他方式?
非常感谢!
package com.company;
import java.util.ArrayList;
import java.util.stream.Collectors;
public class Main {
public static class Objeto {
private String contentId;
private String address;
Objeto(String id, String address) {
this.contentId = id;
this.address = address;
}
public String getContentId() {
return contentId;
}
public String getAddress() {
return address;
}
}
public static void main(String[] args) {
java.util.List<Objeto> myList = new ArrayList<Objeto>();
Objeto o1 = new Objeto("1", "bbb");
myList.add(o1);
Objeto o2 = new Objeto("1", "rrrr");
myList.add(o2);
Objeto o3 = new Objeto("2", "eee");
myList.add(o3);
Objeto o4 = new Objeto("2", "wwww");
myList.add(o4);
Objeto o5 = new Objeto("3", "iiii");
myList.add(o5);
myList.stream().collect(
Collectors.groupingBy(
Objeto::getContentId,
Collectors.mapping(
Objeto::getAddress,
Collectors.toList()))
).forEach((id, addresses) -> System.out.printf("(%s, {%s})\n", id, addresses.stream().collect(Collectors.joining(","))));
}
}
输出:
(1, {bbb,rrrr})
(2, {eee,wwww})
(3, {iiii})
您可以使用收集器。groupingBy可按对象的ID和收集器对对象进行分组。映射将每个对象映射到其相应的地址:
Map<String,List<String>>
map = myList.stream()
.collect(Collectors.groupingBy(Objeto::getContentID,
Collectors.mapping(Object::getAddress
Collectors.toList())));
我有一个Java类,它有20个属性及其相应的getter和setter。还有两个对象列表:和。 使用Java 8: 但是我必须在哪个地方指定属性呢?是否应该重写和方法?
问题内容: 我想在数据库中复制实体集合。我使用以下方法检索该集合: 现在,我想复制“类别”列表,并使用EntityManager保留它。我正在使用JPA /hibernate。 更新 在知道如何分离我的实体之后,我需要知道要分离什么:当前代码: 这引发了异常。 我认为他想重新加载类别,因为我已经将它们分离了。我现在该怎么办? 问题答案: 亚伦·迪吉拉(AaronDiguila)的答案是去这里的方式
我需要将regex列表应用于字符串,所以我想使用java8 map reduce: 实际上,这段代码可能不是很漂亮,但它很有效。我知道这是无法并行的,对我来说是可以的。 现在我的问题是:Java8(或更高版本)是否有机会写出更优雅的东西?我的意思是避免添加无用的组合器功能。
我有两个(或更多)
假设我有一个Foo对象列表。Foo上有一个属性,我必须使用它从数据源中获取Bar对象。然后我必须将每个bar对象映射回我得到bar的原始Foo对象。 我的尝试如下:
图表视图 该视图直观地显示发布服务器及其订阅服务器的层次结构和关系。将鼠标悬停在订阅服务器上以显示其同步状态。 实例块和箭头以颜色表示复制的不同状态。 绿色块表示服务器已启动(稳定)。 红色块表示服务器已关闭。 绿色箭头表示事务复制已启动,并且订阅服务器与其发布服务器保持同步。 红色箭头表示事务复制已关闭(断开),并且订阅服务器可能未能与其发布服务器保持同步。 黑色箭头表示合并复制。 【提示】使用