Can';t删除java.util.Map.Entry中的所有元素
在条目映射中的所有元素中,我只能删除至少一个位置的元素。有人能解释一下原因吗 Ps:我认为EntryMap和HashMap之间存在问题 这是完整的代码:Can';t删除java.util.Map.Entry中的所有元素,java,hashmap,Java,Hashmap,在条目映射中的所有元素中,我只能删除至少一个位置的元素。有人能解释一下原因吗 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
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());
}
}
}
import java.util.HashMap;
导入java.util.Map;
导入java.util.Map.Entry;
导入java.util.Scanner;
公共类网络{
静态映射mm=新的HashMap();
静态void removentry(整数val){
对于(条目:mm.entrySet()){
if(entry.getKey()==val){
mm.移除(val);
打破
}
}
}
公共静态void main(字符串[]args){
mm.put(123,“一”);
mm.put(1234,“两”);
mm.put(12345,“三”);
mm.put(123456,“四”);
扫描仪=新的扫描仪(System.in);
System.out.println(“我们有:+mm);
对于(;;){
系统输出打印(“要删除的编号:”);
int val=scanner.nextInt();
远程入口(val);
System.out.println(“映射条目为:“+mm.toString());
}
}
}
您的整个removeEntry
方法可以被一条语句取代-mm.remove(val)
。无需迭代入口集
来查找要删除的密钥,即使有,使用=
作为引用类型通常也是错误的。使用等于而不是==进行比较Integers@Eran:谢谢:D,但是为什么我使用==它不运行true?==
比较引用。如果创建两个具有相同值的Integer
实例(假设它不在IntegetCache的范围内,即-128到127),则它们不是相同的对象,因此=
返回false,即使它们具有相同的int
值。