java - 比较java中两个大型自定义列表的对象
问题描述
我对如何比较两个列表有疑问?
这是我的情况。
我有两个ArrayList
(nameList<String>
和countList<Integer>
)。两个列表都可以包含重复值,并且两个列表的大小也相同。
现在我必须将这两个列表合并为一个键值对。为此,我创建了一个 Person 类型的自定义列表:
public class Person {
private String name;
private Integer charCount;
public Person(String name, Integer charCount) {
this.name = name;
this.charCount = charCount;
}
public String Name() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getCharCount() {
return charCount;
}
public void setCharCount(Integer charCount) {
this.charCount = charCount;
}
}
List<Person> plist1 = new ArrayList<Person>();
for (int i=0; i < nameList.size(); i++) {
plist1.add(new Person(nameList.get(i), countList.get(i)));
}
这给了我想要的正确值:
James,5
Charles,6
Lloyd,5
Charles,6
我已经为另一个数据创建了列表,与上面的要求完全相同,比如说plist2
。现在我必须比较这两个列表。也就是说,我必须检查 plist1 中包含的名称是否plist2
也包含在中。
解决方案
您可以使用自定义比较器对两个列表进行排序(首先按名称字段,然后按 charCount 字段),然后同时遍历列表,检查两个列表中的对应对象是否相同。
这将为您提供两个列表在它们包含的对象集合中是否相等(对象可能不是相同的顺序)。例如:
plist1 --> James,5
Charles,6
Lloyd,5
Charles,6
plist2 --> Lloyd,5
Charles,6
James,5
Charles,6
根据上面提到的算法是相等的,但是在下面的场景中它们不会被认为是相等的,
plist1 --> James,7
Charles,6
Lloyd,5
Charles,6
plist2 --> Lloyd,5
Charles,6
James,5
Charles,6
推荐阅读
- python-3.x - 在 miniconda 环境中隐藏 django secret_key 时出错
- xamarin - Xamarin 中的 HttpRequestException 状态码
- excel - 用给定的数组达到一个数字,因为只选择其中的大数字
- javascript - : 和 <> 之间的区别(打字稿)
- kubernetes - 如何配置内部入口以针对特定服务
- javascript - 在 express 之外的脚本中从 express 应用程序导入模块时出现问题
- python - numpy:以移位的方式将数组相加
- polynomials - 如何在存储多项式的 sagemath 中编写数组?
- python - 'QLineEdit' 对象没有属性 'LineEdit'
- javascript - 将用户的更改实际保存到代码中