gpt4 book ai didi

java - 将对象与扩展第一个对象的另一个对象进行比较

转载 作者:行者123 更新时间:2023-12-01 21:50:18 27 4
gpt4 key购买 nike

我试图比较两个混合在一起的对象列表。我有课Sms和另一类ArchivedSms extends Sms .

如何使用 Collections.sort(collection, comparator) 比较这些对象的列表?

List<Sms> smses = new ArrayList<Sms>();
List<ArchivedSms> archivedSmses = new ArrayList<ArchivedSms>();

smses.addAll(archivedSmses);

如何比较这些对象假设它们具有相同的字段,因此我想比较例如作为字符串的电话号码。

最佳答案

您应该编写自己的比较器来实现 Comparator<Sms>

public class SmsComparator implements `Comparator<Sms>` {
@Override
public bool compare(Sms o1, Sms o2) {
// Implement comparison logic
}
}

让我们假设每个 Sms实例有一个字段 int a所以比较器看起来像这样:

public class SmsComparator implements `Comparator<Sms>` {
@Override
public bool compare(Sms o1, Sms o2) {
if(o1.getA() > o2.getA()) return 1;
else if(o1.getA() > o2.getA()) return -1;
else return 0;
}
}

您可以在调用 Collections.sort 时执行相同的内联操作:

Collections.sort(smes, new Comparator<Sms>() {
@Override
public bool compare(Sms o1, Sms o2) {
if(o1.getA() > o2.getA()) return 1;
else if(o1.getA() > o2.getA()) return -1;
else return 0;
}
})

在 java 8 中,您可以执行与 lambda 函数相同的操作(因为这是一个函数式接口(interface))。

关于java - 将对象与扩展第一个对象的另一个对象进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35316150/

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