gpt4 book ai didi

java - 使用可比较接口(interface)进行升序和降序排序

转载 作者:行者123 更新时间:2023-12-01 06:42:45 24 4
gpt4 key购买 nike

我的项目中有一个名为 NewsItem 的类。我想根据用户的需要以降序和升序两种方式对 NewsItem 的 ArrayList 进行排序。问题是我正在使用 Comparable 接口(interface),我要么返回一个具有升序条件或降序条件的 int,另一个被注释。我如何告诉 Collections.sort() 方法给我升序或降序排序列表。这是我的代码。

@Override
public int compareTo(NewsItem compNews) {
int compTime=((NewsItem )compNews).getNewsTime();
/* For Ascending order*/
return this.NewsTime-compTime;

/* For Descending order do like this */
//return compTime-this.NewsTime;
}

现在这里对降序一个进行了注释,以便我可以使用其中之一。我可以在此类中使用静态 boolean 值来使用这些条件之一。但由于我正在序列化此类,因此我没有在此类中使用任何静态变量,并且没有这样做。如有任何帮助,我们将不胜感激。

最佳答案

您的类应该只有 1 个自然顺序。但这并不意味着您的类(class)列表应该具有相同的顺序。

使用Collections.sort对列表进行排序时,您还可以传递一个比较器来更改此排序方法如何看待您的类。

一个例子:

Collections.sort(yourList, new Comparator<NewsItem>(){
public void compare(NewsItem o1, NewsItem o2) {
return o2.compareTo(o1);
}
});

这指示排序方法执行与主类中实现的方法相反的操作。

请注意,当 Android 推出 Java 8 时,您可以使用较短的 Collections.sort(yourList, Comparator.reverseOrder()) 来代替。

关于java - 使用可比较接口(interface)进行升序和降序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38168739/

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