我想获得 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));