1

我想获得 HashMap 的随机值,但只能从一个键。

这就是我构建 HashMap 的方式。每个键都有多个值。

ArrayList<HashMap<String, String>> items = new ArrayList<HashMap<String, String>>();
for (.....) {
        // creating new HashMap
        HashMap<String, String> map = new HashMap<String, String>();
        Element e = (Element) nl.item(i);

        map.put(KEY_1, parser.getValue(e, KEY_1));
        map.put(KEY_2, parser.getValue(e, KEY_2));
// adding HashList to ArrayList
        items.add(map);
}

所以键“KEY_1”有多个值,“KEY_2”也是如此。现在我想使用键“KEY_1”获取随机值。怎么做 ?

编辑:我想我知道问题出在哪里,虽然还不知道如何解决这个问题。问题是定义 size(); 我需要以某种方式获取大小,而不是从“items.size();”之类的所有 HashMap 项目中获取大小。但更类似于“items.KEY_1.size();”

使用此代码获取 NullPointerException

int index = random.nextInt(items.size());
    HashMap<String, String> randomitem = new HashMap<String, String>(); 
    randomitem = items.get(index);
    System.out.println(randomitem.get(KEY_1));

使用此代码,我可以获得非随机的值:

int index = 2;
    HashMap<String, String> randomitem = new HashMap<String, String>(); 
    randomitem = items.get(index);
    System.out.println(randomitem.get(KEY_1));

编辑:使用此代码,我可以获得随机值,但我从所有键中获取值。如何仅从一键获取值?

Random rand = new Random();
indexx = rand.nextInt(items.size());
System.out.println(items.get(indexx));

解决了这个代码我可以从某个键中获取随机值。

Random rand = new Random();
indexx = rand.nextInt(items.size());
HashMap<String, String> randomitems = items.get(indexx);

System.out.println(randomitems.get(KEY_1));
4

0 回答 0