我有一个字符串数组的链表。
List<String[]> list = new LinkedList<>();
此列表的每个元素都包含以下形式的元素:
["word1", "example1", "2"]
如何按每个数组字典中的第一个字符串元素对列表进行排序?
答案 0 :(得分:5)
您需要提供一个 Comparator
来比较数组的第一个值。
list.sort(Comparator.comparing(a -> a[0]));
测试
List<String[]> list = new LinkedList<>();
list.add(new String[] { "word1", "example1", "2" });
list.add(new String[] { "ahead", "invention", "3" });
list.add(new String[] { "sip", "nerve", "4" });
list.sort(Comparator.comparing(a -> a[0]));
list.forEach(a -> System.out.println(Arrays.toString(a)));
输出
[ahead, invention, 3]
[sip, nerve, 4]
[word1, example1, 2]
答案 1 :(得分:4)
可以使用下面的代码对列表进行排序。我想这应该足以满足您的目的。
Collections.sort(list, new Comparator<String[]>() {
@Override
public int compare(String[] arr1, String[] arr2) {
return arr1[0].compareTo(arr2[0]);
}
});
如果您使用的是 Java 8 及更高版本,那么您可以使用以下代码行实现相同的效果。
list.sort((arr1, arr2) -> arr1[0].compareTo(arr2[0]));