如果我有一个ArrayList
的字符串
["bb", "ab", "cf", "aa"]
如何按字母顺序从第1个或第n个索引开始排序(如果第一个索引与其他字符串相同)?有什么我可以使用的方法吗?
上面的列表,我希望index = 1
["aa", "bb", "ab", "cf"]
另一个例子
["bab", "baa", "abbe", "cff"]
将返回
["baa", "bab", "abbe", "cff"]
答案 0 :(得分:1)
您可以使用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
,但您的strings
和array
像javascript
一样。
答案 1 :(得分:0)
看看这个简单的例子:
public static void main(String[] args) {
List<String> listOfStrings = new LinkedList<>();
listOfStrings.add("aa");
listOfStrings.add("bb");
listOfStrings.add("ge");
listOfStrings.add("be");
System.out.println(Arrays.asList(listOfStrings));
String getMe = listOfStrings.remove(3);
listOfStrings.add(0, getMe);
System.out.println(Arrays.asList(listOfStrings));
}
LinkedList
非常适合插入和删除元素,可以在O(1)
(在本地更改)中完成,我还要提及的是,添加或删除列表的开头是在O(1)
也是最适合您的事业。