根据第一个排序数组的索引对第二个数组进行排序

凯萨尔·汗·邦加什(Qaisar Khan Bangash):

我有两个大小相同的数组。

ArrayList<ProfileClass> array1= new ArrayList<>()
ArrayList<Double> array2= new ArrayList<>()

array1 = {b,d,a,c}
array2 = {2.0,4.0,1.0,3.0}

现在,我需要按降序对array2进行排序。
Collections.sort(array2, Collections.reverseOrder());
Expected result: {4.0,3.0,2.0,1.0}

因此,在对每个值进行排序之前,这些值的索引与在排序之后的索引不同。但是,针对array2中的每个值更改索引,我希望array1针对array2中的每个值更改索引。

Final Expected result of array1: {d,c,b,a}

saka1029:

您可以通过按的值对索引(0、1、2、3)排序array2并将结果映射到的值来获得结果array1

System.out.println("array1=" + array1);
System.out.println("array2=" + array2);
ArrayList<ProfileClass> sortedArray1 = IntStream.range(0, array2.size())
    .boxed()
    .sorted(Collections.reverseOrder(Comparator.comparingDouble(i -> array2.get(i))))
    .map(i -> array1.get(i))
    .collect(Collectors.toCollection(ArrayList::new));
System.out.println("sorted array1=" + sortedArray1);

输出:

array1=[b, d, a, c]
array2=[2.0, 4.0, 1.0, 3.0]
sorted array1=[d, c, b, a]

或者您也可以这样做。

ArrayList<ProfileClass> sortedArray1 = IntStream.range(0, array2.size())
    .mapToObj(i -> new Object() {
        double sortKey = array2.get(i);
        ProfileClass value = array1.get(i);
    })
    .sorted(Collections.reverseOrder(Comparator.comparingDouble(obj -> obj.sortKey)))
    .map(obj -> obj.value)
    .collect(Collectors.toCollection(ArrayList::new));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java根据第一个数组的索引对第二个数组进行排序

根据第二个数组问题对第一个数组进行排序

对两个数组进行排序,以便第二个数组排序基于第一个

相对于JavaScript中的第一个数组对第二个数组进行排序

Python:当第一个数组排序时,如何使第二个数组的索引匹配第一个数组的索引?

根据int数组的第一个和第二个元素对int数组的数组列表进行排序

按第一个维度对第二维数组排序,然后对第二个数组排序

如何根据第一个或第二个中的较大值对成对数组进行排序

删除基于第一个数组的第二个数组的索引位置

在 JavaScript 中根据第二个数组更新第一个数组

如何根据第一个列表的索引重新排序第二个列表?

根据第二个数组对NSManagedObjects数组进行排序

检查第一个数组是否已排序,是否有连续的重复元素在重复元素的索引处检查第二个数组

F#两个数组-通过第二个数组的索引过滤的第一个数组乘积

根据第二个值找到内部数组的第一个值

根据第二个值返回数组的第一个值

如何在PHP中对一个数组进行排序并使用键顺序对第二个数组进行排序?

如何在MATLAB中对一个数组进行排序并使用命令对第二个数组进行排序

将第二个数组推入第一个数组中

如何合并和覆盖第二个数组的第一个数组?

如何用第二个数组覆盖第一个数组?

将第二个数组的元素随机分布在第一个数组中

如何取第一个数组的匹配键的第二个数组的值

从第二个数组中存在的第一个数组中删除值

如何找到第一个数组和第二个数组之间的差异

检查第二个数组是否包含第一个数组的元素,然后显示

如何使用PHP将第二个数组值插入第一个数组

将元素从第一个数组添加到第二个数组

如何按顺序将第一个数组乘以第二个数组?