gpt4 book ai didi

java - 对数组值进行排序,使其对应于其他正在排序的数组(当它实际上未更改时)

转载 作者:行者123 更新时间:2023-12-02 09:12:09 25 4
gpt4 key购买 nike

我对 Java 完全陌生,这个问题可能很简单,但我真的需要帮助,因为我努力寻找任何可能的解决方案来解决这个问题。

首先,用一个简短的例子来描述我的问题。假设我有两个数组列表:

// prices
[14, 2, 1, 10]

// ID numbers which correspond to these prices
[0, 1, 2, 3]

我的目标是对这些 ID 进行排序,以便它们对应于按升序排序的随机整数。换句话说,结果应该是:

// IDs sorted so they correspond to prices being in ascending order
[2, 1, 3, 0]

随机整数数组应保持不变。

这可能吗?你能帮我想一下如何做到这一点吗?

最佳答案

假设“ID 号”实际上是第一个数组的索引,如示例所示,那么您可以像这样排序:

int[] prices = { 14, 2, 1, 10 };
int[] idNumbers = { 0, 1, 2, 3 };

int[] sorted = Arrays.stream(idNumbers).boxed()
.sorted(Comparator.comparingInt(i -> prices[i]))
.mapToInt(Integer::intValue).toArray();
System.out.println(Arrays.toString(sorted));

输出

[2, 1, 3, 0]

不幸的是,Java 的运行时库没有提供使用 Comparator (或基本等价物)对原语数组进行排序的 sort 方法,因此在对值进行装箱和拆箱时流式传输是最简单的解决方案。

关于java - 对数组值进行排序,使其对应于其他正在排序的数组(当它实际上未更改时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59313662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com