gpt4 book ai didi

java - 列表<列表<对象>>排序

转载 作者:太空宇宙 更新时间:2023-11-04 12:38:47 26 4
gpt4 key购买 nike

我在排序时遇到问题 List<List<Object>> 。我创建了一个自定义比较器,在其中编写了对数据进行排序的代码。

 public class CustomComparator implements Comparator<List<Object>> 
{
static int i = 0;
public int compare(List<Object> o1, List<Object> o2) {
if (i < o1.size()) {
System.out.println(i);
Object obj1 = o1.get(i);
Object obj2 = o2.get(i);
if (obj1 != null && obj2 != null) {
int value = compareTo(obj1.toString(), obj2.toString());
if (value == 0) {
i++;
compare(o1, o2);
}
return value;
}
if (obj1 == null && obj2 != null) {
return -1;
}
if (obj1 != null && obj2 == null) {
return 1;
}
if (obj1 == null && obj2 == null) {
i++;
compare(o1, o2);
}
}
else{
i=0;
}
return 0;
}

public int compareTo(String value1, String value2) {
return value1.compareTo(value2);
}
}

我试图实现的逻辑是,首先它将尝试使用第 0 个位置的对象进行排序。如果第 0 个位置的值相等或为 null,则它将使用第 2 个位置的对象进行排序等。如果其中一个值为空,则该元素将向下移动。但是,当我尝试使用我编写的代码进行排序时,它会进行排序,但既不是升序也不是降序。它只是被洗牌了。

最佳答案

这里使用递归是没有意义的。只需在循环中迭代两个 List 即可比较它们的元素。

您的递归实现不起作用,因为您忽略了递归调用返回的值。使用静态变量来保存索引也是一个坏主意。如果您的 Comparator 实例同时被两个线程使用,会发生什么?

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

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