我有一个非常棘手的问题!我有一个如下所示的数组列表:
ArrayList<String[]> teamsToOrder = new ArrayList<String[]>();
在每个添加到ArrayList的字符串数组中,如下所示:
String[] arrayExample = {teamNumber,score};
String[] array1 = {"340","100"};
String[] array2 = {"7680","70"};
String[] array3 = {"770","110"};
...........
我希望能够做的是按分数(最佳分数到最差分数)组织数组,如下所示:
String[] array3 = {"770","110"};
String[] array1 = {"340","100"};
String[] array2 = {"7680","70"};
...........
如何组织它们并将它们存储在ArrayList中?我很遗憾地提到这一点,但我的目标要求我以ArrayList形式组织它们。 我不能(我不被允许)为数据创建一个单独的类....
答案 0 :(得分:9)
你可以这样做:
Collections.sort(teamsToOrder, new Comparator<String[]>() {
public int compare(String[] lhs, String[] rhs) {
// Parse the scores of the two items
int leftScore = Integer.parseInt(lhs[1]);
int rightScore = Integer.parseInt(rhs[1]);
// Compare the two scores, and return the result
return Integer.compare(leftScore, rightScore);
}
});
答案 1 :(得分:4)
This was my original post但我编辑了这个以使其更简单:
以下是对ArrayList<String[]>
:
Collections.sort(teamsToOrder,new Comparator<String[]>() {
public int compare(String[] s1, String[] s2) {
return Integer.parseInt(s2[1]) - Integer.parseInt(s1[1]);
}
});
就是这样。所以,作为一个例子:
public static void main(String args[]) {
ArrayList<String[]> teamsToOrder = new ArrayList<String[]>();
String[] array1 = {"340","100"};
String[] array2 = {"7680","70"};
String[] array3 = {"770","110"};
teamsToOrder.add(array1);teamsToOrder.add(array2);teamsToOrder.add(array3);
Collections.sort(teamsToOrder,new Comparator<String[]>() {
public int compare(String[] s1, String[] s2) {
return Integer.parseInt(s2[1]) - Integer.parseInt(s1[1]);
}
});
// display the new sorted ArrayList of String arrays:
for (String[] s: teamsToOrder) {
System.out.println(Arrays.toString(s));
}
}
输出:
[770, 110]
[340, 100]
[7680, 70]
答案 2 :(得分:1)
您应该编写一个Comparator来按照您想要的方式比较Strings。然后使用实现的比较器对ArrayList进行排序。请参阅:http://docs.oracle.com/javase/6/docs/api/java/util/Comparator.html
答案 3 :(得分:0)
您可以通过以下方式实现此目的。建议使用List
接口而不是ArrayList
对象。
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> entries = new ArrayList<String>();
entries.add("0 - name1");
entries.add("1000 - name2");
entries.add("1004 - name4");
entries.add("1002 - name3");
entries.add("10000 - name5");
entries.add("2000 - name5");
Comparator<String> comparator = new MyComparator();
Collections.sort(entries, comparator );
for (String e : entries){
System.out.println(e);
}
}