【发布时间】:2016-05-05 05:53:50
【问题描述】:
我在对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 个位置的值相等或为空,那么它将使用第 2 个位置的对象等进行排序。 如果其中任何一个值为空,则该元素将向下移动。 但是,当我尝试使用我编写的代码进行排序时,它会排序,但既不是升序也不是降序。它只是洗牌。
【问题讨论】:
-
我不会把那个静态 i 放在比较器类中。那是不好的做法。在多线程环境中,您最终会遇到一些非常奇怪的行为。
-
您想对列表进行相互排序吗?或者只是按升序或降序对特定列表进行独立排序??
-
我想按升序对特定列表进行排序
-
我也想对列表进行排序...所以 List
- > 中的元素内部列表不应该改变
标签: java arraylist comparator