gpt4 book ai didi

java - 如何按先数字字母后数字对字符串列表进行排序

转载 作者:行者123 更新时间:2023-12-03 07:52:53 25 4
gpt4 key购买 nike

我有一个字符串列表,如下:

(2D, 1D, 1Y, 23M, 4M, 2Y, 12D)

如何按字母顺序然后按数字排序?

我期待

(1D, 2D, 12D, 4M, 23M, 1Y, 2Y)

我尝试过,但没有成功。

Collections.sort(myList, new MyComparator());

public class MyComparator implements Comparator {

@Override
public int compare(Object o1, Object o2) {

String s1 = (String)o1;
String s2 = (String)o2;
String strPart1 = s1.split("")[1];
int intPart1 = Integer.parseInt(s1.split("")[0]);

String strPart2 = s2.split("")[1];
int intPart2 = Integer.parseInt(s2.split("")[0]);

int strCompareResult = strPart1.compareTo(strPart2);
if(0 == strCompareResult )
{
return intPart1 - intPart2;
}
else
{
return strCompareResult;
}
}

}

然而这并没有奏效。

最佳答案

您可以先按最后一个字符排序,然后将其他字符解析为 int。使用 Comparator.comparing.thenComparing 方法可以更轻松地编写 Comparator

myList.sort(Comparator.comparing((String s) -> s.charAt(s.length() - 1))
.thenComparingInt(s -> Integer.parseInt(s.substring(0, s.length() - 1))));

关于java - 如何按先数字字母后数字对字符串列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76721424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com