gpt4 book ai didi

Java - 对数组进行排序

转载 作者:行者123 更新时间:2023-12-02 05:28:29 24 4
gpt4 key购买 nike

我需要一些帮助..

我有一个包含 float 的数组列表:

[.43423, .2132, .3242, .....]

我想创建一个新数组来对该列表进行排序并生成类似的内容

[1, 3, 2, ....]

.43423 becomes 1 because it is the biggest
.3242 becomes 2 because it is the next biggest
etc..

如果小数点相同,则它们成为相同的整数值。

我怎样才能做到这一点?感谢您的帮助

最佳答案

我将通过创建原始 ArrayList 的副本然后对其进行排序来完成此操作,现在我将循环遍历原始 ArrayList 并获取它们在排序后的 上的索引>数组列表。这是我想到的:

//Initialization
ArrayList<Float> origOrder = new ArrayList<Float>();
origOrder.add(new Float(.43423));
origOrder.add(new Float(.43423));
origOrder.add(new Float(.2132));
origOrder.add(new Float(.3242));

//Copy original ArrayList
ArrayList<Float> sortedOrder = new ArrayList<Float>(origOrder);

//Remove duplicates
HashSet hs = new HashSet();
hs.addAll(sortedOrder);
sortedOrder.clear();
sortedOrder.addAll(hs);

//Sort copy in descending order
Collections.sort(sortedOrder, Collections.reverseOrder());

//ArrayList for result
ArrayList<Integer> result = new ArrayList<Integer>();

//For each float in the original ArrayList
for (Float f : origOrder) {

//Add their index in the sorted order to the result list, plus 1 to start with 1
result.add(sortedOrder.indexOf(f) + 1);
}

System.out.println(result);

输出如下:

[1, 1, 3, 2]

希望这会有所帮助。

关于Java - 对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25777581/

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