我环顾四周,无法找到与我类似的问题。我将这两个字符串插入到数组中。我需要它按升序组织。
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]);
}
答案 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);
}
});