我有一个字符串数组,这些字符串是我不想更改的外部代码中的类的实例。
我还具有通过在每个对象上调用函数而生成的整数数组。所以我有
答:[string1, string2, string3]
和
B:[40, 32, 34]
我如何轻松地对A进行排序,以便按B的值对其进行排序。我想按顺序排序A:
[string2, string3, string1]
在javascript中,您可以这样做:
B.sort(function(a,b){return A[B.indexOf(a)] < A[B.indexOf(b)];});
最佳答案
在Java 8中,您可以执行此操作
带有lambda:
String[] strings = new String[]{"string1", "string2", "string3"};
final int[] ints = new int[]{40, 32, 34};
final List<String> stringListCopy = Arrays.asList(strings);
ArrayList<String> sortedList = new ArrayList(stringListCopy);
Collections.sort(sortedList, (left, right) -> ints[stringListCopy.indexOf(left)] - ints[stringListCopy.indexOf(right)]);
或更佳的是,使用Comparator:
String[] strings = new String[]{"string1", "string2", "string3"};
final int[] ints = new int[]{40, 32, 34};
final List<String> stringListCopy = Arrays.asList(strings);
ArrayList<String> sortedList = new ArrayList(stringListCopy);
Collections.sort(sortedList, Comparator.comparing(s -> ints[stringListCopy.indexOf(s)]));