我的数组包含如下项目:
“ITEM_NAME_1 :: ITEM_DESCRIPTION :: ITEM_VALUE”
(因此数组中的每个项目都包含单独的数据,稍后将在“::”处拆分)
我的问题是,如何通过“ITEM_VALUE”(这是一个数值)对数组进行排序,我尝试了以下操作,没有运气:
Arrays.sort(inputArr, new Comparator<String>() {
@Override
public int compare(String entry1, String entry2) {
String[] entry1Split = entry1.split("::");
String[] entry2Split = entry2.split("::");
return entry1Split[2].compareTo(entry2Split[2]);
}
});
答案 0 :(得分:2)
你应该可以这样做:
Arrays.sort(inputArr, new Comparator<String>() {
@Override
public int compare(String entry1, String entry2) {
String[] entry1Split = entry1.split("::");
String[] entry2Split = entry2.split("::");
return Double.valueOf(entry1Split[2]).compareTo(Double.valueOf(entry2Split[2]));
}
});
即,如果您的数值是浮点值。如果它们是整数,则可以使用Integer.valueOf
代替Double.valueOf
。
答案 1 :(得分:1)
你可能想要考虑解析数组中的字符串并为每个条目创建一个对象 - 比如
class Item {
String value;
String description
Integer value;
}
这样你每个对象只会解析一次字符串,而不是每次排序算法需要进行比较时多次解析。