gpt4 book ai didi

java - 如何按降序对字符串编号进行排序?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:49:08 24 4
gpt4 key购买 nike

下面是我的列表,其格式始终为 bXXXX -

List<String> data = Arrays.asList("b5", "b10", "b2", "b1", "b40");
System.out.println(data);

我的data 列表将始终包含bXXXX

形式的字符串

现在我需要按降序对上面的列表进行排序并从中提取最大的字符串..

所以在上面的例子中,它将是 b40.. 所以下面是我使用的比较器,它按升序对所有内容进行排序 -

static final Comparator<String> aStringComparator = new Comparator<String>() {
public int compare(String s1, String s2) {
//assumed input are strings in the form axxxx
int numfromS1 = Integer.valueOf(s1.subSequence(1, s1.length()).toString());
int numfromS2 = Integer.valueOf(s2.subSequence(1, s2.length()).toString());
return numfromS1 - numfromS2;
}
};

而且我无法理解如何使它按降序排序,以便我可以从列表中提取第一个索引,这将是最大的字符串编号?

最佳答案

如果您的比较器按升序工作,那么您需要做的就是反转比较器的结果。

如果此代码适合您:

return numfromS1 - numfromS2;

然后将其更改为:

return numfromS2 - numfromS1;

或者,也许更地道一点:

return (numfromS2 < numfromS1) ? -1: (numfromS2 > numfromS1) ? 1 : 0;

现在您的数据将按降序排列。

您也可以按照其他人的建议,使用以下任一方法:

return ((Integer) numfromS2).compareTo(numfromS1);

或:

Collections.sort(data, Collections.reverseOrder(aStringComparator));

关于java - 如何按降序对字符串编号进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21949279/

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