我是新来积极地写问题在这里,虽然我已经使用这个网站一段时间了。使用多个索引排序字符串[]的ArrayList
我想根据数组的前两个索引按照词汇顺序(=自然顺序?!)排序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]
而lambda表达式不适合我全新的,这使得它更清晰的对我来说,他们在java中是如何工作的。谢谢您的回答。 –