我有一个看起来像这样的数组:
array[] = {1c, 13d, 11d, 10d, 1h, 13h, 5s, 2s, 12d}
我想根据数组中的数字对数组进行排序所以最终的结果是:
{1c, 1h, 2s, 5s, 10d, 11d, 12d, 13d, 13h}
有办法吗?
答案 0 :(得分:1)
想想你如何用纸和笔(没有电脑)做到这一点。你有可能:
Collections.sort()
是你的朋友:)答案 1 :(得分:1)
执行此操作的最佳方法是实施Comparator界面。当您决定如何比较字符串时,可以使用Arrays类中的实用程序方法。这是一个完整的工作示例。
import java.util.Arrays;
import java.util.Comparator;
public class Foo {
public static void main(String[] args) {
String[] myArray = {"1c", "13d", "11d", "10d", "1h", "13h", "5s", "2s", "12d"};
System.out.println(Arrays.toString(myArray));
Arrays.sort(myArray, new Comparator<String>() {
@Override
public int compare(String one, String two) {
int oneNum = Integer.parseInt(one.substring(0, one.length() - 1));
int twoNum = Integer.parseInt(two.substring(0, two.length() - 1));
char oneChar = one.charAt(one.length() - 1);
char twoChar = two.charAt(two.length() - 1);
if (oneNum < twoNum) {
return -1;
} else if (oneNum == twoNum) {
if (oneChar < twoChar) {
return -1;
} else if (oneChar == twoChar){
return 0;
} else {
return 1;
}
} else {
return 1;
}
}
}
);
System.out.println(Arrays.toString(myArray));
}
}