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

Java 将对象与扩展第一个对象的另一个对象进行比较,java,sorting,collections,Java,Sorting,Collections,我试图比较两个混淆的对象列表。我有一个类Sms,另一个类ArchivedSms扩展了Sms 如何使用Collections.sort(collection,comparator)比较这些对象的列表 List smses=new ArrayList(); List archivedSmses=new ArrayList(); 添加所有文件(归档文件); 如何比较这些对象假定它们都有相同的字段,因此我想比较例如作为字符串的电话号码。您应该编写自己的比较器,实现比较器 调用集合时,可以执行相同的内联

我试图比较两个混淆的对象列表。我有一个类
Sms
,另一个类
ArchivedSms扩展了Sms

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

List smses=new ArrayList();
List archivedSmses=new ArrayList();
添加所有文件(归档文件);

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

您应该编写自己的比较器,实现
比较器

调用
集合时,可以执行相同的内联操作。排序

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;
    }
})
Collections.sort(smes,新的比较器(){
@凌驾
公共广播比较(短信o1、短信o2){
如果(o1.getA()>o2.getA())返回1;
else if(o1.getA()>o2.getA())返回-1;
否则返回0;
}
})

在Java8中,您可以做与lambda函数相同的事情(因为这是一个函数接口)。

您应该编写自己的比较器,实现
比较器

调用
集合时,可以执行相同的内联操作。排序

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;
    }
})
Collections.sort(smes,新的比较器(){
@凌驾
公共广播比较(短信o1、短信o2){
如果(o1.getA()>o2.getA())返回1;
else if(o1.getA()>o2.getA())返回-1;
否则返回0;
}
})

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

实现
比较器
。实现
比较器
。我不能使用内联新比较器吗?例如Collections.sort(smses,newcomparator(){});当然,只需内联实现
compare
方法。在Java8中,这也可以是一个lambda表达式,因为这是一个函数接口。我编写了@Override public int compare(Sms o1,Sms o2){if(o1.getPhoneNumber().equals(o2.getPhoneNumber()){return 1;}else if(!(o1.getPhoneNumber().equals(o2.getPhoneNumber())){return-1;}else返回0;}但是@Collections.sort(smses,new-smscomperator())仍然不起作用;在这里比较Sms和ArchivedSms类可以吗?我不能使用内联的新比较器吗?例如Collections.sort(smses,newcomparator(){});当然,只需内联实现
compare
方法。在Java8中,这也可以是一个lambda表达式,因为这是一个函数接口。我编写了@Override public int compare(Sms o1,Sms o2){if(o1.getPhoneNumber().equals(o2.getPhoneNumber()){return 1;}else if(!(o1.getPhoneNumber().equals(o2.getPhoneNumber())){return-1;}else返回0;}但是@Collections.sort(smses,new-smscomperator())仍然不起作用;在这里比较Sms和ArchivedSms类可以吗?
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(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;
    }
})