gpt4 book ai didi

java - 如何按升序对包含列表的对象进行排序

转载 作者:行者123 更新时间:2023-12-01 19:39:08 25 4
gpt4 key购买 nike

我想按升序从列表中获取数据..

List<Region> region = (List<Region>) model.get("region");

如果我使用Collection.sort(region);

然后显示这个,Collections 类型中的方法 sort(List) 不适用于参数 (List)

最佳答案

您需要将类 Region 定义为 Comparable,或者需要将 Comparator 类型的附加参数传递给排序方法。

没有比较器 signature

public static <T extends Comparable<? super T>> void sort(List<T> list)[1]

并且 javadoc 明确指出该类必须实现 Comparable:

Sorts the specified list into ascending order, according to the natural ordering of its elements. All elements in the list must implement the Comparable interface. Furthermore, all elements in the list must be mutually comparable (that is, e1.compareTo(e2) must not throw a ClassCastException for any elements e1 and e2 in the list).

在这种情况下,您需要按如下方式修改代码:

public class Region implements Comparable {

public int compareTo(Region o) {
// Add the logic to compare regions here.
}

...
}

带有比较器的第二个版本具有以下signature :

public static <T> void sort(List<T> list, Comparator<? super T> c)

并且所有元素必须使用传递的比较器进行比较:

Sorts the specified list according to the order induced by the specified comparator. All elements in the list must be mutually comparable using the specified comparator (that is, c.compare(e1, e2) must not throw a ClassCastException for any elements e1 and e2 in the list).

在这种情况下,您需要更改直接调用排序方法的代码,如下所示:

Collections.sort(regionList, (Region r1, Region r2)-> {
// Add compare logic here
});

注意:您的代码中还有一个小错误,要使用的类是 Collections (带有 s),而不是接口(interface) Collection。我还将列表的名称从region更改为regionList(最终将其命名为regions),因为它不仅是单个元素,而且是一个列表。

关于java - 如何按升序对包含列表的对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56000690/

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