【发布时间】:2016-02-12 11:06:41
【问题描述】:
虽然我已经使用这个网站一段时间了,但我还是刚开始在这里积极写问题。
我想根据数组的前两个索引按词法顺序(= 自然顺序?!)对 ArrayList 进行排序。目前我使用了以下代码:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
public class SortArrayList {
public static void main(String[] args) {
ArrayList<String[]> workingSet = new ArrayList<>();
workingSet.add(new String[]{"MiningCorp", "2265 Betacity"});
workingSet.add(new String[]{"MiningCorp", "6454 Iotacity"});
workingSet.add(new String[]{"Arbiter", "3812 Gammacity"});
workingSet.add(new String[]{"MiningCorp", "1234 Thetacity"});
workingSet.add(new String[]{"Arbiter", "1812 Deltacity"});
Comparator<String[]> staComp = new Comparator<String[]>() {
@Override
public int compare(String[] first, String[] second) {
String composite1 = first[0] + " " + first[1];
String composite2 = second[0] + " " + second[1];
return composite1.compareTo(composite2);
}
};
Collections.sort(workingSet, staComp);
for(String[] arr : workingSet){
System.out.println(Arrays.toString(arr));
}
}
}
这应该会产生以下输出:
[Arbiter, 1812 Deltacity]
[Arbiter, 3812 Gammacity]
[MiningCorp, 1234 Thetacity]
[MiningCorp, 2265 Betacity]
[MiningCorp, 6454 Iotacity]
这正是我想要的。 有没有更优雅的方式使用预建方法?
如果我想通过按词法顺序按第一个数组条目分组来排序,但在这个组中我希望各个数组按逆词法顺序排序,该怎么办? 为此,我是否需要第二个比较器来首先对每个数组的第二个索引的条目进行预排序?
这是我想为这个例子得到的:
[Arbiter, 3812 Gammacity]
[Arbiter, 1812 Deltacity]
[MiningCorp, 6454 Iotacity]
[MiningCorp, 2265 Betacity]
[MiningCorp, 1234 Thetacity]
【问题讨论】:
标签: java arrays sorting arraylist