我有一个字符串数组。该数组由三个整数数组组成。但每个整数后跟一个字符。 l或p或r。
现在我的目标是根据int值对字符串数组进行排序。数组排序或Collection.sort
无法正常工作。在我的情况下,如果数组是
{-2l 1r 0p 4p 3l}答案应为{-2l 0p 1r 3l 4p}。
String[] left = new String[starts.length];
String[] right = new String[ends.length];
String[] points_fast = new String[points.length];
for (int i = 0; i < starts.length; i++) {
left[i] = (starts[i] + "l" + " ");
}
for (int i = 0; i < ends.length; i++) {
right[i] = (ends[i] + "r" + " ");
}
for (int i = 0; i < points.length; i++) {
points_fast[i] = (points[i] + "p" + " ");
}
String[] add = new String[left.length + right.length + points_fast.length];
// add=l+r+p;
System.arraycopy(left, 0, add, 0, left.length);
System.arraycopy(right, 0, add, left.length, right.length);
System.arraycopy(points_fast, 0, add, left.length + right.length, points_fast.length);
我的目标是对数组“添加”进行排序。 N.B我试图将它转换为list然后使用collections.sort。它不起作用。
答案 0 :(得分:2)
我希望这能满足您的解决方案: 你只需要使用Collection.sort并覆盖比较器
List<String> mnames1 = Arrays.asList("-2l", "1r", "0p", "4p", "3l");
System.out.println(mnames1+" before");
Collections.sort(mnames1, new Comparator<String>() {
@Override
public int compare(String a, String b) {
String m = a.substring(0,a.length()-1);
String n = b.substring(0,b.length()-1);
return Integer.compare(Integer.parseInt(m),Integer.parseInt(n));
}
});
System.out.println(mnames1+ "after");
输出:
[ - 2l,1r,0p,4p,3l] 之前 [ - 2l,0p,1r,3l,4p]