HashMap のランダムな値を取得したいのですが、1 つのキーからのみ取得します。
これが私の 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));
編集:このコードを使用すると、ランダムな値を取得できますが、すべてのキーから値を取得します。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));