gpt4 book ai didi

java - 如何在 Java 中使用 Collections 对从类中填充的列表进行排序

转载 作者:行者123 更新时间:2023-11-29 10:02:28 25 4
gpt4 key购买 nike

我在尝试对以下列表进行排序时遇到问题。只需使用 Collections.sort(mylist);显示一个我无法理解的错误,因为我是 Java 的初学者

Myclass x1 = new Myclass("8", "12");
Myclass x2 = new Myclass("6", "9");
Myclass x3 = new Myclass("11", "14");
List<Myclass> mylist = Arrays.asList(x1, x2, x3);

如何对“mylist”进行排序,使其按以下顺序存储 - (6,9),(8,12),(11,14)即根据元组的第一个值

最佳答案

您真的想将数字作为字符串传递,然后尽可能将它们作为数字进行比较吗?

我假设 Myclass 具有以下接口(interface):

class Myclass {
public Myclass(String first, String second) {..}
public String getFirst() {..}
public String getSecond() {..}
}

然后按如下方式实现您的自定义 Comparator。由于您正在比较字符串但考虑数字,请使用 AlphanumComparator (将 java 实现放入某个包中):

public class MyComparator implements Comparator<Myclass> {
private final static AlphanumComparator alphaNum = new AlphanumComparator();

@Override
public int compare(Myclass a, Myclass b) {
return alphaNum.compare( a.getFirst(), b.getFirst() );
}
}

你可以调用:

Collections.sort(myList, new MyComparator())

或者您可以让您的类实现 Comparable interface然后 Collections.sort(myList) 将根据该接口(interface)的 compareTo 方法对其进行排序。

但是,如果你的问题没有被正确提出,而 Myclass 实际上是一对整数(不是字符串),那么你可以简单地定义你的比较器,如下所示:

public class MyComparator implements Comparator<Myclass> {
@Override
public int compare(Myclass a, Myclass b) {
return a.getFirst() - b.getFirst();
}
}

关于java - 如何在 Java 中使用 Collections 对从类中填充的列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20000798/

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