【发布时间】:2021-04-15 22:10:50
【问题描述】:
有两个 int 数组和一个名为 cost 和 shipping 的数组列表。我想要一个总价从最低到最高的 ArrayList(例如 cost[0] + shipping[0]),但重新排序两个 int 数组以匹配 ArrayList:
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int[] costs = new int[n];
int[] shipping = new int[n];
ArrayList<Integer> totalCosts = new ArrayList<>();
例如,假设成本为 [1, 5, 2, 3],运费为 [2, 3, 2, 4],那么 totalCosts 将是 {3, 8, 4, 7} 并排序为{3、4、7、8}。我希望重新排序费用和运费,以便它们与总数相对应,因此费用为 [1, 2, 3, 5],运费为 [2, 2, 4, 3]。
【问题讨论】:
-
你想要那个,你尝试过什么来实现它?
-
这很难做到,因为您需要根据排序移动列表元素的方式来移动数组元素。创建一个包含成本、运费和总价的新类更容易。然后列出这些并对其进行排序。
-
一般情况下,有multiple collections that must be maintained in parallel is a bad idea。我将创建一个
List<Order>,其中 Order 类有 2 个字段,成本和运费,以及一个方法getTotal将它们相加。然后使用List.sort进行排序变得微不足道,并且由于数据在逻辑上分组为对象,因此会自动维护索引。如果你真的需要的话,你可以把它再次分解成新的数组 -
这里使用 HashMap 可能会更好,然后在你的地图上调用 sort,因为默认排序是稳定的,应该没有任何问题!
标签: java arrays sorting arraylist