我需要按List<Object[]>
值排序Object[3]
。这可能吗? Comparator
应该如何?
我不知道如何制作它......我已经通过简单的比较器实现检查了这一点,但它失败了..
提前致谢
答案 0 :(得分:0)
Object[]
的简单比较器看起来像这样。比较标准取决于您要做的事情。事实上,比较对象数组并不是那么简单,也许您应该尝试使用其他数据结构来实现您想要实现的任何目标。尽管如此:
public class ObjectArrayComparator implements Comparator<Object[]> {
public int compare(Object[] o1, Object[] o2) {
// ...
return ...;
}
}
另请参阅Comparator以获取有关其行为方式的更多信息。
答案 1 :(得分:0)
您仍然需要定义如何比较对象,但有一些方法可以这样做
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Sorter {
class Wrapper implements Comparable{
Object[] array;
/* (non-Javadoc)
* @see java.lang.Comparable#compareTo(java.lang.Object)
*/
@Override
public int compareTo(Object o) {
Object o1 = array[3];
//replace the code here with the result of the comparison between o1 and o
//some example here
return o1.toString().compareTo(o.toString());
}
}
/**
* @param args
*/
public static void main(String[] args) {
Sorter s = new Sorter();
List<Wrapper> list = new ArrayList<Wrapper>();
Object[] arr1 = new Object[4];
arr1[0] = "abc1";
arr1[1] = "def1";
arr1[2] = "ghi1";
arr1[3] = new Integer(2);
Wrapper w1 = s.new Wrapper();
w1.array = arr1;
Object[] arr2 = new Object[4];
arr2[0] = "abc2";
arr2[1] = "def2";
arr2[2] = "ghi2";
arr2[3] = new Integer(1);
Wrapper w2 = s.new Wrapper();
w2.array = arr2;
list.add(w1);
list.add(w2);
Collections.sort(list,new Comparator<Wrapper>(){
@Override
public int compare(Wrapper o1, Wrapper o2) {
return o1.compareTo(o2);
}
});
System.out.println(list.get(0).array[3]);
}
}