选择一个 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;
}
我正在尝试遍历 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;
}