gpt4 book ai didi

java - 如何在不接收重复项的情况下随机化一定数量的枚举值?

转载 作者:行者123 更新时间:2023-11-29 07:55:36 24 4
gpt4 key购买 nike

我正在尝试随机化一些枚举值,而不是多次分配相同的枚举值。

例如:

public class Strings {

public enum String {HELLO, WORLD, HELLOWORLD, HELLOAGAIN};

private static final List<Strings> VALUES =
Collections.unmodifiableList(Arrays.asList(values()));
private static final int SIZE = VALUES.size();
private static final Random RANDOM = new Random();

public static Strings randomString() {
return VALUES.get(RANDOM.nextInt(SIZE));
}
}
}

当我从我的 main 调用这个方法时,我会得到一个输出(或类似的):

HELLO
HELLO
HELLO
WORLD

我需要,一旦枚举值被输出,它就不能再次输出,如果是,抛出一个异常/错误说没有剩余值。

谢谢

最佳答案

好吧,每次你想要一个随机值时,你可以使用 Collections.shuffle(List<?>) 来洗牌你的集合。 .然后移除并获取第一个st 元素。这样,您就不会得到副本。是的,那时您不应该使用不可修改 列表。正如您将要修改的那样。

请给您的 enum 起个别的名字. String已经是 Java API 中定义的类。

你可以试试这段代码:

class Strings {
enum Test {HELLO, WORLD, HELLOWORLD, HELLOAGAIN};

private static final List<Test> VALUES = new ArrayList<>(Arrays.asList(Test.values()));

public static Test randomString() {
Collections.shuffle(VALUES);
return VALUES.remove(0);
}
}

关于java - 如何在不接收重复项的情况下随机化一定数量的枚举值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17997270/

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