2
在Entry Map中的所有元素中,我只能删除至少一个元素的位置。任何人都可以解释什么原因?无法删除java.util.Map.Entry中的所有元素
PS:我觉得问题在EntryMap与HashMap的
这是全码:
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
public class Neti {
static Map<Integer, String> mm = new HashMap<>();
static void removeEntry(Integer val) {
for (Entry<Integer, String> entry : mm.entrySet()) {
if (entry.getKey() == val) {
mm.remove(val);
break;
}
}
}
public static void main(String[] args) {
mm.put(123, "one");
mm.put(1234, "two");
mm.put(12345, "three");
mm.put(123456, "four");
Scanner scanner = new Scanner(System.in);
System.out.println("We have: " + mm);
for (;;) {
System.out.print("Number to remove: ");
int val = scanner.nextInt();
removeEntry(val);
System.out.println("Map entries are: " + mm.toString());
}
}
}
使用等于而不是==比较整数 – Eran
@Eran:谢谢:D,但为什么我使用==它不会运行正确? – Hoang
'=='比较引用。如果创建两个具有相同值的Integer实例(假设它不在IntellCache的范围内,即-128到127),它们不是同一个对象,所以即使它们具有相同的“int”值。 – Eran