gpt4 book ai didi

java - 枚举列表 : I have 2 enums and I have to make a list/array

转载 作者:行者123 更新时间:2023-11-30 03:45:34 26 4
gpt4 key购买 nike

我认为这是一个相当新手的问题,但我已经花了 6 个多小时以这种方式做这件事,我不知道最好的方式是什么,所以我请求你帮助了解如何完成它.

我有 2 个枚举,例如汽车和自行车。我必须制作 listarray (我不知道哪个更好),其中包含 2 - 1 000 000 个元素,完成后我必须重新排序 list/array(自行车在开头,汽车在结尾)。自行车和汽车只有一辆,但可能有几百辆、几千辆甚至更多。我不知道是否可以使 EnumMap 包含 2 个枚举。

EnumMap 有键和值,所以我给了键“car”和值“0”,键“bike”值“1”,这样重新排序会更容易,但我发现我无法在 EnumMap 上执行此操作,因为无论我添加多少元素,总是只有 2 个元素,自行车和汽车。我想不能谈论数百个。

我没有关注数组的原因是在代码的开头有enum Garage {bike, car};

是的,这是家庭作业,但我只是希望找到完成它的方法(花了几个小时阅读和尝试不同的方法),而不是有人为我做它。

最佳答案

我建议您将逻辑分成两个方法,第一个 countGoats(Animal[]) -

private static int countGoats(Animal[] animals) {
int count = 0;
for (Animal a : animals) {
if (Animal.goat == a) {
count++;
}
}
return count;
}

由于 goats 计数之前的每个元素都应该是数组中的 goat(以及 sheep 之后的每个元素),因此我们可以用类似的东西迭代数组,

public static void reorder(Animal[] animals) {
if (animals == null) {
return;
}
int goats = countGoats(animals);
for (int i = 0; i < animals.length; i++) {
// if (i < goats) - it's a goat, otherwise it's a sheep.
animals[i] = (i < goats) ? Animal.goat : Animal.sheep;
}
}

这是 Counting sort 的示例运行时复杂度为 O(n)。正如维基百科文章所述,

Because counting sort uses key values as indexes into an array, it is not a comparison sort, and the Ω(n log n) lower bound for comparison sorting does not apply to it.

关于java - 枚举列表 : I have 2 enums and I have to make a list/array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25818720/

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