gpt4 book ai didi

java - 对 Java 对象列表进行排序

转载 作者:行者123 更新时间:2023-11-30 12:05:53 25 4
gpt4 key购买 nike

我有一个 Java 对象列表

List<MyObject> list = new ArrayList<>();
list.add(new MyObject("1", "1"));
list.add(new MyObject("2", "2"));
list.add(new MyObject("3", "3"));
list.add(new MyObject("4", "12"));
list.add(new MyObject("5", "1d2"));

我的对象是

Public MyObject {
String id;
String myNumber;
...
}

现在我想按 myNumber 仅按数字对我的列表进行排序所以我想要一个结果:

MyObject("5", "1d3");
MyObject("4", "12");
MyObject("3", "3");
MyObject("2", "2");
MyObject("1", "1");

我该怎么做?

与list.sort(Comparator.comparing(MyObject::getMyNumber));给我

MyObject("3", "3");
MyObject("2", "2");
MyObject("5", "1d3");
MyObject("4", "12");
MyObject("1", "1");

最佳答案

我建议您在实现“Comparable”时在对象中编写自己的比较方法

有点像

公共(public)类 CompareObject 实现 Comparable{

String id;
String myNumber;

public CompareObject(String id, String myNumber) {
this.id = id;
this.myNumber = myNumber;
}

public int compareTo(CompareObject c) {
String myNumberOnlyNumbers = "";
String otherNumberOnlyNumbers = "";
for(int i = 0; i < myNumber.length(); i++) {
try {
myNumberOnlyNumbers += Integer.parseInt(myNumber.charAt(i)+"") + "";
} catch (NumberFormatException e) {

}
}

for(int i = 0; i < c.myNumber.length(); i++) {
try {
otherNumberOnlyNumbers += Integer.parseInt(c.myNumber.charAt(i)+"") + "";
} catch (NumberFormatException e) {

}
}

return Integer.compare(Integer.parseInt(myNumberOnlyNumbers), Integer.parseInt(otherNumberOnlyNumbers));
}

在你的情况下“CompareObject”将是“MyObject”

之后你可以做

    List<CompareObject> list = new ArrayList<>();
list.add(new CompareObject("1", "1"));
list.add(new CompareObject("2", "2"));
list.add(new CompareObject("3", "3"));
list.add(new CompareObject("4", "12"));
list.add(new CompareObject("5", "1d3"));

Collections.sort(list, Collections.reverseOrder()); //Collections.reverseOrder() meaning in descending order here

如果我这样做

    for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).id + " - " + list.get(i).myNumber);
}

打印我得到的列表

5 - 1d3
4 - 12
3 - 3
2 - 2
1 - 1

关于java - 对 Java 对象列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55916309/

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