gpt4 book ai didi

java - 如果元素的键重复但值必须附加到 java 中的单个键,如何从列表中删除该元素?

转载 作者:行者123 更新时间:2023-11-29 04:46:16 26 4
gpt4 key购买 nike

我有 list ,

但是,我想做的是,在列表中,键是重复的,所以我必须删除该记录,但值应该附加到单个键

我的方法:

ArrayList<Students> students = new ArrayList<Students>();
student = getDetails();
for(int i=0;i<students.size();i++)
{
for(int j=i+1;j<students.size();j++)
{
if(students.get(i).getName().equals(students.get(j).getName()))
{
string name=students.get(j).getName();
students.set(i).setName(students.get(i).getName()+","+name"");
students.remove(j);
}
}
}

在这里,我只能将索引 1 值附加到索引 0..循环正在退出以进行下一次迭代。

Input:
Name=Student1 Id=1000,
Name=Student1 Id=1003,
Name=Student1 Id=1004,


Expected output:
Name=Student1 Id=1000, 1003,1004

Actual getting output:
Name=student1 Id=1000,1003
Name=student1 Id=1004

最佳答案

您正在尝试将值 (Student) 分配给键 (Name),其中给定键可以有多个值。您应该使用 Multimap 结构而不是数组(参见 Oracle documentation )。

这可以使用 Java 8 Streams 自动完成:

    Student s1 = new Student("Student1", 1000);
Student s2 = new Student("Student1", 1003);
Student s3 = new Student("Student1", 1004);
List<Student> l = Arrays.asList(s1,s2,s3);
Map<String, List<Student>> z = l.stream().collect(Collectors.groupingBy(Student::getName));
System.out.println(z);

输出符合预期: {Student1=[Id=1000, Id=1003, Id=1004]}

为了得到这个结果,我必须覆盖 StudenttoString() 方法来打印 Id。我希望它有所帮助。

关于java - 如果元素的键重复但值必须附加到 java 中的单个键,如何从列表中删除该元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36997367/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com