随机 select 键值对的最佳方式
Best way to select key-value pairs randomly
我正在设计一个程序,只要它们低于特定阈值,selects 随机密钥对。
所以假设我有这些作为我的密钥对:
Padded=1
Leather=2
Studded Leather=3
Hide=4
Scale Mail=5
理想情况下,我只能 select 一个或多个密钥对的组合加起来低于某个数字,然后将所选密钥对的文本打印到屏幕上。
存储密钥对的最佳方法是什么,该密钥对易于编辑且效率较高,并且可以从中随机 selected。我可能最终会得到 200 多个密钥对。
如果你想通过键有效地访问值并且能够随机获取它们,你可以使用 Map
和 List
的组合。如果你想访问一个随机对,你还应该声明一些自定义的 class 代表这个对。
Map
将存储键值对,而 List
将仅存储键 - 这将使您能够使用随机数来获得随机对。
在你的情况下它可能是这样的:
class Pair {
private final String key;
private int value;
public Pair(String key, int value) {
this.key = key;
this.value = value;
}
public String getKey() {
return key;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
@Override
public String toString() {
return key + ": " + value;
}
}
class Pairs {
private static final Random RND = new Random();
private List<String> list = new ArrayList<>();
private Map<String, Pair> map = new HashMap<>();
public void addPair(String key, int value) {
list.add(key);
map.put(key, new Pair(key, value));
}
public Pair getPair(String key) {
return map.get(key);
}
public Pair getRandomPair() {
return map.get(list.get(RND.nextInt(list.size())));
}
}
以及用法:
Pairs pairs = new Pairs();
pairs.addPair("Padded", 1);
pairs.addPair("Leather", 2);
pairs.addPair("Hide", 4);
pairs.getPair("Hide").setValue(3);
System.out.println(pairs.getPair("Hide").getValue());
System.out.println(pairs.getRandomPair());
我正在设计一个程序,只要它们低于特定阈值,selects 随机密钥对。
所以假设我有这些作为我的密钥对:
Padded=1
Leather=2
Studded Leather=3
Hide=4
Scale Mail=5
理想情况下,我只能 select 一个或多个密钥对的组合加起来低于某个数字,然后将所选密钥对的文本打印到屏幕上。
存储密钥对的最佳方法是什么,该密钥对易于编辑且效率较高,并且可以从中随机 selected。我可能最终会得到 200 多个密钥对。
如果你想通过键有效地访问值并且能够随机获取它们,你可以使用 Map
和 List
的组合。如果你想访问一个随机对,你还应该声明一些自定义的 class 代表这个对。
Map
将存储键值对,而 List
将仅存储键 - 这将使您能够使用随机数来获得随机对。
在你的情况下它可能是这样的:
class Pair {
private final String key;
private int value;
public Pair(String key, int value) {
this.key = key;
this.value = value;
}
public String getKey() {
return key;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
@Override
public String toString() {
return key + ": " + value;
}
}
class Pairs {
private static final Random RND = new Random();
private List<String> list = new ArrayList<>();
private Map<String, Pair> map = new HashMap<>();
public void addPair(String key, int value) {
list.add(key);
map.put(key, new Pair(key, value));
}
public Pair getPair(String key) {
return map.get(key);
}
public Pair getRandomPair() {
return map.get(list.get(RND.nextInt(list.size())));
}
}
以及用法:
Pairs pairs = new Pairs();
pairs.addPair("Padded", 1);
pairs.addPair("Leather", 2);
pairs.addPair("Hide", 4);
pairs.getPair("Hide").setValue(3);
System.out.println(pairs.getPair("Hide").getValue());
System.out.println(pairs.getRandomPair());