我有两个Personne
列表:listOne
和listTwo
。
Personne
是:
public class Personne{
private String name;
private Favorite favorite;
private Collection<Number> numbers;
}
public class Favorite{
private String id;
private String name;
...
}
对于每个项目,如果第一个列表的收藏夹名称和id等于第二个列表的收藏夹名称和ID,我想合并两个列表,然后将第二个列表合并到第一个列表。
这是我的治疗的一部分,我的意思是合并(它没有创建其他列表):
如果我的条件为真,我想把我的第一个清单列为项目:
item.setNumbers(item2.getnumbers);
使用Java 7执行此操作的最佳方法是什么?
答案 0 :(得分:1)
我尝试迭代listOne,检查listTwo中的每个所需项目,并在这种情况下将listOne和listTwo中的条目添加到新列表中。
像
这样的东西答案 1 :(得分:0)
据我所知,我们希望获得一个包含两个列表的所有唯一元素的列表,而不会重复。
首先,让我们为ArrayList.contains()方法正常运行所需的类创建一个equals()方法:
class Favorite {
...
private boolean equals(Favorite other) {
int i = id.compareTo(other.id);
if (i != 0) return false;
return (name.compareTo(other.name) == 0);
}
class Personnel {
...
private boolean equals(Personnel other) {
int i = name.compareTo(other.name);
if (i != 0) return false;
return favorite.equals(other.favorite);
}
由于无法保证输入列表已排序,我们可以编写如下合并方法:
public List<Personnel> merge(List<Personnel> listOne, List<Personnel> listTwo) {
List<Personnel> result = new ArrayList<>(listOne);
for (Personnel p : listTwo) {
if (!result.contains(p)) {
result.add(p);
}
}
return result;
}