Java 根据字符串中的数字对字符串[]数组进行排序
我有一个数组,看起来像:Java 根据字符串中的数字对字符串[]数组进行排序,java,arrays,Java,Arrays,我有一个数组,看起来像: array[] = {1c, 13d, 11d, 10d, 1h, 13h, 5s, 2s, 12d} 我想根据数组中的数字对数组进行排序,以便最终结果为: {1c, 1h, 2s, 5s, 10d, 11d, 12d, 13d, 13h} 有没有办法做到这一点?想想你是如何只用纸和铅笔(没有电脑)做到这一点的。你很可能会: 遍历数组的每个元素,并将其转换为一个整数(即删除非数字字符) 对结果仅整数数组或列表进行排序。提示:Collections.sort()是您
array[] = {1c, 13d, 11d, 10d, 1h, 13h, 5s, 2s, 12d}
我想根据数组中的数字对数组进行排序,以便最终结果为:
{1c, 1h, 2s, 5s, 10d, 11d, 12d, 13d, 13h}
有没有办法做到这一点?想想你是如何只用纸和铅笔(没有电脑)做到这一点的。你很可能会:
- 遍历数组的每个元素,并将其转换为一个整数(即删除非数字字符)
- 对结果仅整数数组或列表进行排序。提示:
是您的朋友:)Collections.sort()
- 最好的方法是实现接口。当您决定如何比较字符串时,可以在类中使用实用程序方法。下面是一个完整的工作示例
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));
}
}
导入java.util.array;
导入java.util.Comparator;
公开课Foo{
公共静态void main(字符串[]args){
字符串[]myArray={“1c”、“13d”、“11d”、“10d”、“1h”、“13h”、“5s”、“2s”、“12d”};
System.out.println(Arrays.toString(myArray));
sort(myArray,newcomparator(){
@凌驾
公共整数比较(字符串1、字符串2){
intonenum=Integer.parseInt(一个.substring(0,一个.length()-1));
inttwonum=Integer.parseInt(两个.substring(0,两个.length()-1));
char oneChar=one.charAt(one.length()-1);
char twoChar=two.charAt(two.length()-1);
if(oneNum
肯定有办法;到目前为止,您尝试了什么?我还没有想出正确的逻辑。实现您自己的压缩程序,并像往常一样对其进行排序。非常感谢。我已经想出了一个解决方案,但这段代码要好得多。:-)我假设字符串的格式是一个整数,后跟一个字符。如果不是这样,您可以使用类似.split(\\D+)的正则表达式来正确拆分它。是的,就是这样。