Java 随机选择键值对的最佳方法

Java 随机选择键值对的最佳方法,java,key,Java,Key,我正在设计一个程序,只要它们低于某个阈值,就可以选择随机密钥对 假设我有这些作为我的密钥对: Padded=1 Leather=2 Studded Leather=3 Hide=4 Scale Mail=5 理想情况下,我只能选择一个或多个键对的组合,这些组合加起来低于某个数字,然后将所选键对的文本打印到屏幕上 存储密钥对的最佳方法是什么?这些密钥对易于编辑,效率较高,并且可以从中随机选择。我最终可能会有200多个键对。如果您想有效地按键访问值,并且能够随机获取它们,您可以使用Map和List

我正在设计一个程序,只要它们低于某个阈值,就可以选择随机密钥对

假设我有这些作为我的密钥对:

Padded=1
Leather=2
Studded Leather=3
Hide=4
Scale Mail=5
理想情况下,我只能选择一个或多个键对的组合,这些组合加起来低于某个数字,然后将所选键对的文本打印到屏幕上


存储密钥对的最佳方法是什么?这些密钥对易于编辑,效率较高,并且可以从中随机选择。我最终可能会有200多个键对。

如果您想有效地按键访问值,并且能够随机获取它们,您可以使用
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());