gpt4 book ai didi

java - 从 map 中随机选择 n 个项目

转载 作者:行者123 更新时间:2023-11-30 08:21:30 25 4
gpt4 key购买 nike

我正在尝试从 HashMap 中随机生成“n”个项目,其中“n”由用户确定。

这是我目前所拥有的:

public static void main(String []args){
int numColors = 3;
HashMap<String, String> map = new HashMap<String, String>();
map.put("White","FFFFFF");
map.put("Blank","000000");
map.put("Red","ED0A15");
map.put("Green","06F76C");
map.put("Blue","0689FF");
map.put("Sky Blue","00C2FC");
map.put("Light Blue","08F0FC");
map.put("Silver","C0BFC5");
map.put("Mint","ABD3CA");
map.put("Off White","FFEFF0");
map.put("Purple","736FFA");
map.put("Lavendar","DEBEEF");
map.put("Hot Pink","F5159A");
map.put("Pink","DB39CC");
map.put("Light Pink","F5C2E3");
map.put("Blush","C95FA7");
map.put("Orange","D4361B");
map.put("Yellow","DEF231");
map.put("Warm White","F3E4C3");
map.put("Turquoise","01DCA4");

List<String> valuesList = new ArrayList<String>(map.values());
int randomIndex = new Random().nextInt(valuesList.size());
String randomValue = valuesList.get(randomIndex);

System.out.printf(randomValue);
}

它为我打印 1 种随机颜色(十六进制),这是我想要的,但是我不确定如何/使用哪个循环来从 map 中生成 3 种随机十六进制颜色。我将 numColors 声明为 3 只是为了尝试对此进行测试。

这是我最终的结果:

public static void main(String []args){
int numColors = 3;
HashMap<String, String> map = new HashMap<String, String>();
map.put("White","FFFFFF");
map.put("Blank","000000");
map.put("Red","ED0A15");
map.put("Green","06F76C");
map.put("Blue","0689FF");
map.put("Sky Blue","00C2FC");
map.put("Light Blue","08F0FC");
map.put("Silver","C0BFC5");
map.put("Mint","ABD3CA");
map.put("Off White","FFEFF0");
map.put("Purple","736FFA");
map.put("Lavendar","DEBEEF");
map.put("Hot Pink","F5159A");
map.put("Pink","DB39CC");
map.put("Light Pink","F5C2E3");
map.put("Blush","C95FA7");
map.put("Orange","D4361B");
map.put("Yellow","DEF231");
map.put("Warm White","F3E4C3");
map.put("Turquoise","01DCA4");

List<String> keys = new ArrayList<String>(map.keySet());
Random rand = new Random();
for (int i = 0; i < numColors; i++) {
String key = keys.get(rand.nextInt(keys.size()));
System.out.println(map.get(key));
}

}

最佳答案

一个简单的解决方案是使用 Collections.shuffle(map) 随机播放整个 map 。然后迭代它并选择前 n 个元素。

当然,如果 map 很大而您只需要几个元素,这就没有意义了。

编辑:

自然地,使用这个解决方案你不会得到任何重复的条目

关于java - 从 map 中随机选择 n 个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25167823/

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