gpt4 book ai didi

java - 比较两个不同类型的数组列表

转载 作者:太空宇宙 更新时间:2023-11-04 14:53:59 26 4
gpt4 key购买 nike

我有两个数组列表,称为“赋值”和“人员”,并且它们的类型和大小也不同。问题陈述:我想从人员 id 等于作业 id 的人员中删除项目,我写了以下比较器。

SortedSet<Map.Entry<AssignmentResults, Person>> text = new TreeSet<Map.Entry<AssignmentResults, Person>>(
new Comparator<Map.Entry<AssignmentResults, Person>>() {

@Override
public int compare(Entry<AssignmentResults, Person> lhs,
Entry<AssignmentResults, Person> rhs) {
// TODO Auto-generated method stub
int statusvalue = 0;

if (rhs.getValue().getId()
.equals(lhs.getKey().getId()))
statusvalue = 1;

return statusvalue;
}

});

但我不确定如何使用它来获取人员数组列表,其中所有不包含分配 ID 的项目都将被删除。如有任何帮助,我们将不胜感激。我需要健壮且复杂性较低的逻辑

最佳答案

这很令人困惑:您打算处理列表并比较 map 条目。

你可以:

  • 让您的 PersonAssignment 类都使用 getId 实现通用接口(interface)。

  • 在两个类中覆盖equals,以便具有相同 id 的对象相等。您可以使用 getIdObject 参数转换为公共(public)接口(interface)的实例。

  • 您还应该覆盖 hashCode ,以便具有相同 id 的对象具有相同的哈希码。如果 id 是一个对象,您可以只返回 getId().getHashCode()

  • 然后您可以执行persons.removeAll(assignments)

顺便说一句,所有这些都不是真正的“干净”;但它可以完成特定用例的工作。如果您打算提供具有许多其他用例的库,请不要依赖于此

关于java - 比较两个不同类型的数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23425089/

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