我有一个字符串数组,这些字符串是我不想更改的外部代码中的类的实例。

我还具有通过在每个对象上调用函数而生成的整数数组。所以我有

答:[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)]));

10-08 01:53