首页 > 解决方案 > 根据索引对列表中的字符串进行排序

问题描述

如果我有一个ArrayList字符串 ["bb", "ab", "cf", "aa"],我如何按第一个或第 n 个索引及以后的字母顺序排序(如果第一个索引与其他字符串相同)?有没有我可以使用的方法?

上面的列表,我希望 index = 1

["aa", "bb", "ab", "cf"]

另一个例子是

["bab", "baa", "abbe", "cff"]会回来

["baa", "bab", "abbe", "cff"]

标签: javastringsortingarraylist

解决方案


您可以使用Comparator.comparingInt执行此排序:

使用索引0对数组进行排序:

String[] s = {"bb", "ab", "cf", "aa"};
Arrays.sort(s, Comparator.comparingInt(s1 -> s1.charAt(0)));
Arrays.asList(s).forEach(System.out::println);

或排序列表:

List<String> s = Arrays.asList("bb", "ab", "cf", "aa");
s.sort(Comparator.comparingInt(s2 -> s2.charAt(0)));
s.forEach(System.out::println);

输出:

ab
aa
bb
cf

否则使用索引1排序数组:

String[] s = {"bb", "ab", "cf", "aa"};
Arrays.sort(s, Comparator.comparingInt(s2 -> s2.charAt(1)));
Arrays.asList(s).forEach(System.out::println);

或索引 1 用于排序列表

List<String> s = Arrays.asList("bb", "ab", "cf", "aa");  
s.sort(Comparator.comparingInt(s2 -> s2.charAt(1)));
s.forEach(System.out::println);

输出:

aa
bb
ab
cf

PS:你质疑java,但你stringsarray喜欢javascript..


推荐阅读