根据索引对列表中的字符串进行排序

时间:2019-04-06 08:16:58

标签: java string sorting arraylist

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

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

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

另一个例子

["bab", "baa", "abbe", "cff"]将返回

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

2 个答案:

答案 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,但您的stringsarrayjavascript一样。

答案 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)也是最适合您的事业。