gpt4 book ai didi

java - 对字母数字字符串列表 : java 进行排序

转载 作者:行者123 更新时间:2023-12-04 08:36:55 25 4
gpt4 key购买 nike

我有字符串列表

String[] list = ...
其中元素仅包含字母数字字符。我想要做的是对列表中的每个元素进行排序,使数字先出现,然后是大写字母的字母表,然后是小写字母的字母表。
例如,使用输入列表
u78t
U78
7u8
X92
输出将是
7u8
U78
X92
u78t
我一直在努力寻找正确的方法,并且我一直在阅读关于比较器的文章,但这有点让人不知所措,至少我想知道它们是否是我实现目标时应该考虑的内容。
谢谢!
编辑:IKo 的回答完美无缺。但是,我应该要求在字符串中允许非字母数字字符。每个字符串中至少有一个字母数字字符,排序时应忽略任何非字母数字字符(但保留)。
例如,输入
&Bd
*$8
返回应该是
*$8
&Bd
因为非字母数字被忽略(但保留)并且数字出现在(大写)字母之前。但是,IKo 的代码产生相反的顺序。我尝试将 IKo 的代码修改为 follows :
private String[] sort(String[] input) {
return Arrays.stream(input)
.map(s -> s.replaceAll("[^a-zA-Z0-9]", ""))
.sorted()
.toArray(String[]::new);
}
这意味着在排序时删除非数字,但这似乎是错误的方法,我认为 replaceAll 只会在排序时删除非字母数字,但输出本身已删除了非字母数字。换句话说,现在所有元素的顺序是正确的,但元素已被更改,这是我不想要的。

最佳答案

你可以使用这样的东西:

private String[] sort(String[] input) {
return Arrays.stream(input)
.sorted()
.toArray(String[]::new);
}

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

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