Bel*_*ver 5 java sorting arraylist multidimensional-array
我有一个包含双值的二维ArrayList:
ArrayList<ArrayList<Double>> data = new ArrayList<ArrayList<Double>>();
Run Code Online (Sandbox Code Playgroud)
与经典数组类似,我想对这个矩阵的"cols"进行排序:我想在子ArrayLists中获取具有相同索引的项,然后对它们进行排序.就像为每一列调用Collections.sort()一样......按行我的意思是外层和内层是列.
这样做的正确方法是什么?我想迭代矩阵来反转它然后用Collections.sort()排序每一行?但也许它不是最好的解决方案,因为矩阵大约是400*7000.
我不能使用经典数组,因为矩阵的大小是未知的.
感谢帮助.
做这样的事情:
final int COLUMN = 5;
Comparator<ArrayList<Double>> myComparator = new Comparator<ArrayList<Double>>() {
@Override
public int compare(ArrayList<Double> o1, ArrayList<Double> o2) {
return o1.get(COLUMN).compareTo(o2.get(COLUMN));
}
};
Collections.sort(list, myComparator);
Run Code Online (Sandbox Code Playgroud)
将 COLUMN 设置为您要排序的任何列。
更新:
是的,这根本行不通。
我喜欢 ahanin 的第二个建议,即制作你自己的列表来包装你的原始列表。您还必须包装 get() 返回的对象,以便变量wrappedList 包含列值,并且wrappedList.get(0) 也返回一列值。然后排序就可以工作了。我想知道您必须实现 Collections.sort() 才能在列表上工作的最少方法是什么。
最简单的方法可能是采用别人的快速排序并使其适用于您的列表。
这是一种实现:http://www.vogella.de/articles/JavaAlgorithmsQuicksort/article.html