gpt4 book ai didi

java - 通过不同的方式订购一个系列

转载 作者:行者123 更新时间:2023-12-01 04:41:22 25 4
gpt4 key购买 nike

我有这门课:

public class Paint implements Comparable<Paint>{

private String cod_paint;
private String title_paint;
private String author;
private int year;

public Paint(String cod_paint,String title_paint,String author,int year){

this.cod_paint = cod_paint;
this.title_paint = title_paint;
this.author = author;
this.year = year;
}

/* And follow get method */

}

现在我将创建一些对象 Paint 并将它们插入到一个集合中,例如 ArrayList

在我必须按 author 对这个集合进行一次排序之后,另一次year还有一次 cod_paint .

为此,我必须在 Paint 内部实现方法 compareTo

例如:

public int compareTo(Paint p){

return cod_paint.compareTo(p.cod_paint);
}

这样当我使用方法sort在我的 ArrayList<Paint>它将按 cod_paint 订购.但是现在如何在相同的方法 compareTo 中实现另一种排序方式(按作者、按年份)?

最佳答案

不要使用Comparable,而是使用自定义的Comparator。我会使用 Comparator 的枚举:

public enum PaintComparator implements Comparator<Paint>{
BY_NAME{
@Override
public int compareTo(Paint left, Paint right){
return left.getAuthor().compareTo(right.getAuthor());
}
},
// more similar items here
}

现在使用它如下:

List<Paint> myList = // init list here
Collections.sort(myList, PaintComparator.BY_NAME);

参见:

关于java - 通过不同的方式订购一个系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8524266/

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