Java 8 java 8从对象列表创建自定义对象

Java 8 java 8从对象列表创建自定义对象,java-8,Java 8,这是问题的扩展。我有一个消息列表。我想创建一个带有审核值的自定义消息列表 公共类消息{ int-id; 字符串消息; int audId; 字符串消息; 公共int getId(){ 返回id; } 公共无效集合id(内部id){ this.id=id; } 公共字符串getMessage(){ 返回消息; } 公共无效设置消息(字符串消息){ this.message=消息; } public int getAudId(){ 返回audId; } 公共无效setAudId(int audId

这是问题的扩展。我有一个消息列表。我想创建一个带有审核值的自定义消息列表

公共类消息{
int-id;
字符串消息;
int audId;
字符串消息;
公共int getId(){
返回id;
}
公共无效集合id(内部id){
this.id=id;
}
公共字符串getMessage(){
返回消息;
}
公共无效设置消息(字符串消息){
this.message=消息;
}
public int getAudId(){
返回audId;
}
公共无效setAudId(int audId){
this.audId=audId;
}
公共字符串getAudmessage(){
返回消息;
}
public void setAudmessage(字符串audmessage){
this.audmessage=audmessage;
}
公共消息(int-id、String-message、int-audId、String-audmessage){
this.id=id;
this.message=消息;
this.audId=audId;
this.audmessage=audmessage;
}
}
公共类自定义消息{
int-id;
串味精;
名单;
//接球手和接球手
}
公共类澳元{
int-id;
int消息;
//接球手和接球手
}
公开课演示{
公共静态void main(字符串参数[]){
列表=新的ArrayList();
添加(新消息(1,“abc”,10,“a1”);
添加(新消息(2,“ac”,21,“a2”);
增加(新信息(3,“adc”,31,“a3”);
列表.添加(新信息(4,“aec”,40,“a4”);
添加(新消息(1,“abc”,11,“a5”);
添加(新信息(2,“ac”,22,“a5”);
}
预期输出为1,abc->审计列表为(10,a1)、(11,a5);

此处的答案(如果我理解正确)与上一个问题中的答案几乎相同,但有两个假设。首先,您的
Aud
构造函数实际存在,如下所示:

    public Aud(int id, String message) {
        this.id = id;
        this.message = message;
    }
而且您没有用于
id和消息的
持有者
,因此我使用了
抽象映射。SimpleEntry

 Map<SimpleEntry<Integer, String>, List<Aud>> map = list.stream()
            .collect(Collectors.groupingBy(
                 m -> new SimpleEntry<>(m.getId(), m.getMessage()),
                 Collectors.mapping(
                       m -> new Aud(m.getAudId(), m.getAudMessage()), 
                       Collectors.toList())));
与:

m -> {
    Aud aud = new Aud(); 
    aud.setId(m.getAudId()); 
    aud.setMessage(m.getAudMessage());
    return aud;
}
这里的答案(如果我理解正确的话)与上一个问题几乎相同,但有两个假设。首先,您的
Aud
构造函数实际存在,如下所示:

    public Aud(int id, String message) {
        this.id = id;
        this.message = message;
    }
而且您没有用于
id和消息的
持有者
,因此我使用了
抽象映射。SimpleEntry

 Map<SimpleEntry<Integer, String>, List<Aud>> map = list.stream()
            .collect(Collectors.groupingBy(
                 m -> new SimpleEntry<>(m.getId(), m.getMessage()),
                 Collectors.mapping(
                       m -> new Aud(m.getAudId(), m.getAudMessage()), 
                       Collectors.toList())));
与:

m -> {
    Aud aud = new Aud(); 
    aud.setId(m.getAudId()); 
    aud.setMessage(m.getAudMessage());
    return aud;
}

顺便说一句,你真的应该停止张贴问题,比如这是如何做到的;你必须至少提供一些努力…顺便说一句,你真的应该停止张贴问题,比如这是如何做到的;你必须至少提供一些努力…只想提一下我不想使用构造函数。想使用getter和setter。这是有原因的。custommessage是holder对于id和mesage,其中包含要更新的AudJust列表,我需要一个CustomMessage列表作为我的结果,即带有audit@coder25所以您实际上想要返回一个
CustomMessage
列表,对吗?是的,还想使用optional检查null。原来,CustomMessage有许多字段,不仅仅是这个字段two@coder25请参见编辑。您也可以不要添加太多细节,希望我们只回答它们。只想提一下,我不想使用构造函数。我想使用getter和setter。这是有原因的。custommessage是id和mesage的持有者,其中包含Aud列表要更新我想要一个custommessage列表作为我的结果,即带有audit@coder25所以你真的想要to返回
CustomMessage
列表,对吗?是,还希望使用可选选项检查空值。最初,自定义消息有许多字段,而不仅仅是此字段two@coder25请参阅编辑。此外,您不能添加一些详细信息,而希望我们只回答它们。