选择一个 RANDOM 键然后跳出 HashMap 中的迭代器/循环

Selecting a RANDOM key and then breaking out of Iterator / loop in HashMap

我正在尝试遍历 HashMap,这样它应该 select 任何随机 KEY,如果找到该 KEY,它应该跳出循环并 select 对应于那个的值钥匙.

但不知何故这段代码无法正常工作,它 select 只是一个特定的值。请注意,它包含我在下面的 IF 语句中为其编码的所有值和键。

下面是我的代码

Iterator<Entry<String, Set<String>>> it = arg0.getSubstylearea().entrySet().iterator();

    A: while (it.hasNext()) {
        Map.Entry<String, Set<String>> entry = (Map.Entry<String, Set<String>>) it.next();
        String key = entry.getKey();
        Set<String> temp = arg0.getSubstylearea().get(key);

        if (key.equals("Eyes")) {
            flatont.setStylearea1(key);
            System.out.println("This Doesnt Print");
            for (String s : temp) {

                flatont.setStylesubarea1(s);

            }
            break A;
        } else if (key.equals("Face")) {

            flatont.setStylearea1(key);

            for (String s : temp) {

                flatont.setStylesubarea1(s);
            }
            break A;
        } else if (key.equals("Lips")) {

            flatont.setStylearea1(key);

            for (String s : temp) {

                flatont.setStylesubarea1(s);
            }
            break A;
        } 
}

请帮助我实现这个目标

简单的怎么样continue:

while (it.hasNext()) {
    Map.Entry<String, Set<String>> entry = (Map.Entry<String, Set<String>>) it.next();
    String key = entry.getKey();
    Set<String> temp = arg0.getSubstylearea().get(key);

    if (key.equals("Eyes")) {
        flatont.setStylearea1(key);
        System.out.println("This Doesnt Print");
        for (String s : temp) {

            flatont.setStylesubarea1(s);

        }
        continue;
    } else if (key.equals("Face")) {

        flatont.setStylearea1(key);

        for (String s : temp) {

            flatont.setStylesubarea1(s);
        }
        continue;
    } else if (key.equals("Lips")) {

        flatont.setStylearea1(key);

        for (String s : temp) {

            flatont.setStylesubarea1(s);
        }
        continue;
    } 
}

即使找到指定的键之一,这仍然会遍历键。否则,做一个简单的 break:

while (it.hasNext()) {
    Map.Entry<String, Set<String>> entry = (Map.Entry<String, Set<String>>) it.next();
    String key = entry.getKey();
    Set<String> temp = arg0.getSubstylearea().get(key);

    if (key.equals("Eyes")) {
        flatont.setStylearea1(key);
        System.out.println("This Doesnt Print");
        for (String s : temp) {

            flatont.setStylesubarea1(s);

        }
        break;
    } else if ... etc

我不完全确定我明白你想要什么,但试试这个:

    Map<String, Set<String>> map = arg0.getSubstylearea()
    int index = new Random().nextInt(map.size());
    int i = 0;
    for (Map.Entry<String, Set<String>> entry : map.entrySet()) {
        if (i++ < index) {
            continue;
        }
        String key = entry.getKey();
        Set<String> temp = arg0.getSubstylearea().get(key);

        if (key.equals("Eyes")) {
            flatont.setStylearea1(key);
            System.out.println("This Doesnt Print");
            for (String s : temp) {

                flatont.setStylesubarea1(s);

            }
        } else if (key.equals("Face")) {

            flatont.setStylearea1(key);

            for (String s : temp) {

                flatont.setStylesubarea1(s);
            }
        } else if (key.equals("Lips")) {

            flatont.setStylearea1(key);

            for (String s : temp) {

                flatont.setStylesubarea1(s);
            }
        } else {
            // Do something else
        }
        break;
    }