基于int以升序组织2D数组

时间:2015-11-12 06:36:10

标签: java arrays

我环顾四周,无法找到与我类似的问题。我将这两个字符串插入到数组中。我需要它按升序组织。

final String[][] customer = new String [][]{
    new String[] {"Mary Smith","86"},
    new String[] {"John Doe","100"},
    new String[] {"Maria Garcia","93"},
    new String[] {"Rajesh Patel","91"},
    new String[] {"Malia AlFaleh","105"},
    new String[] {"Li Sung ","100"},
    new String[] {"Jamal Brown","103"},
    new String[] {"Latisha Ford","108"},
    new String[] {"Su Chan","107"},
    new String[] {"Bob O'Leary","33"},
    new String[] {"Aziz Gupta","88"},
    new String[] {"Roman Zwykowicz","97"},
    new String[] {"Roberto Miguel Rodriguez","111"},
    new String[] {"Josh Miller","104"},
    new String[] {"Rosie O'Brien","50"},
    new String[] {"Stan Anderson","96"},
    new String[] {"Bob O'Leary Sr.","47"},
    new String[] {"Lynn VanderCook","109"},
    new String[] {"Mohsin Waleed","117"},
    new String[] {"Abdalla AlSaid","120"},
    new String[] {"Ling Yin","107"},
    new String[] {"Jim O'Leary sr.","39"},
};

这就是问题所在。我试图将PV从字符串解析为int,但它不能使用return语句。任何想法如何比较并使最低数字存储在顶部?

Arrays.sort(customer, new Comparator<String[]>() {
        @Override
        public int compare(final String[] name, final String[] PV) {
            final String temp1 = name[0];
            final int temp2 = Integer.parseInt(PV[0]);
            return temp1.compareTo(temp2);
        }
});
for (final String[] s : customer) {
    System.out.println(s[0] + " " + s[1]);
}

1 个答案:

答案 0 :(得分:0)

您正在比较名称而不是整数,并且您尝试将其中一个解析为int(如果您的代码通过编译会抛出异常)并将String与int进行比较(它不会通过汇编)。

尝试:

                Arrays.sort(customer, new Comparator<String[]>() {
                  @Override
                  public int compare(final String[] first, final String[] second) {
                    final Integer temp1 = Integer.valueOf(first[1]);
                    final Integer temp2 = Integer.valueOf(second[1]);
                    return temp1.compareTo(temp2);
                  }
                });