如何对由String数组组成的数组列表进行排序?

时间:2013-12-29 00:57:13

标签: java arrays

我有一个非常棘手的问题!我有一个如下所示的数组列表:

 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形式组织它们。 我不能(我不被允许)为数据创建一个单独的类....

4 个答案:

答案 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);
        }

    }