1

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));
4

0 に答える 0