【问题标题】:Java Comparator - Comparing 2 different objects in listJava Comparator - 比较列表中的 2 个不同对象
【发布时间】:2018-02-15 15:54:49
【问题描述】:

我在 Java 中有以下类,我想将列表中的 tocompare 对象与之前的 tocompare 对象进行比较,即将 t2t1 进行比较。

我是 Java 新手,所以我对如何执行此操作了解不多。

public class ToCompare {
    private String property1;
    private String property2;

    public void getProperty1(){
        return property1;
    }
    public void setProperty1(String property1){
        this.property1 = property1;
    }

    public void getProperty2(){
        return property2;
    }
    public void setProperty1(String property2){
        this.property2 = property2;
    }
}

List<ToCompare> tocompare = new ArrayList();
ToCompare t1 = new ToCompare();
ToCompare t2 = new ToCompare();
ToCompare t3 = new ToCompare();
ToCompare t4 = new ToCompare();

tocompare.add(t1); //obj1
tocompare.add(t2); //obj2
tocompare.add(t3); //obj3
tocompare.add(t4); //obj4

for (String comp : tocompare) {
    // compare properties of 2nd ToCompare object with 1st ToCompare object
}

【问题讨论】:

  • 实现Comparable或写一个Comperator&lt;ToCompare&gt;
  • 你打算分类吗?

标签: java comparator comparable


【解决方案1】:

使用 Comparable 接口并实现定义比较策略的 compareTo 方法 - https://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html

例如,如果您想根据property1比较它们 -

public class ToCompare implements Comparable<ToCompare> {
    private String property1;
    private String property2;

    public void getProperty1(){
        return property1;
    }

    public void setProperty1(String property1){
        this.property1 = property1;
    }

    public void getProperty2(){
        return property2;
    }

    public void setProperty1(String property2){
        this.property2 = property2;
    }

    @Override
    public int compareTo(ToCompare toCompare){  
        return this.getProperty1().compareTo(i.getProperty1()); 
   }  
}

【讨论】:

  • 我如何使用比较器来做到这一点,因为我希望它具有通用性,以便我可以传递任何类,如 ToCompare2?
猜你喜欢
  • 2021-12-03
  • 2020-12-16
  • 2022-06-26
  • 2022-11-19
  • 1970-01-01
  • 1970-01-01
  • 2012-09-07
  • 1970-01-01
  • 2023-03-10
相关资源
最近更新 更多