[英]Difference between linkedhaspmap and linkedhashmap<Integer,String>
我創建了兩個地圖,如下所示。 誰能解釋一下為什么程序的輸出是這樣的,為什么deletecontent方法允許我通過mymap2? 創建 mymap 和 mymap2 的區別
public class Candidate {
public static void main(String[] args) {
// TODO Auto-generated method stub
LinkedHashMap<Integer, String> mymap= new LinkedHashMap<Integer, String>();
mymap.put(1, "INDIA");
mymap.put(2, "USA");
mymap.put(3, "RUSSIA");
LinkedHashMap mymap2= new LinkedHashMap();
mymap2.put("1", "INDIA");
mymap2.put("2", "USA");
mymap2.put("3", "RUSSIA");
deleteContent(mymap);
deleteContent(mymap2);
print(mymap);
System.out.println("------------------");
print(mymap2);
}
private static void print(LinkedHashMap<Integer, String> mymap) {
for (Entry<Integer, String> e: mymap.entrySet()) {
System.out.println(e.getKey()+"-----"+ e.getValue());
}
}
private static void deleteContent(LinkedHashMap<Integer, String> mymap) {
// TODO Auto-generated method stub
mymap.remove("3");
}
}
output of the below program is
1-----INDIA
2-----USA
------------------
1-----INDIA
2-----USA
3-----RUSSIA
您在問題中輸入的輸出不是此代碼實際產生的輸出,即:
1-----INDIA
2-----USA
3-----RUSSIA
------------------
1-----INDIA
2-----USA
第二個 Map 具有 String 鍵和 String 值。 因此,僅適用於第二個 Map mymap.remove("3");
從地圖中刪除一個條目。
mymap.remove("3");
通過編譯,即使mymap
是LinkedHashMap<Integer, String>
,因為remove
接受Object
類型的參數。
由於向后兼容, deleteContent
允許您將原始LinkedHashMap
類型傳遞給它。 您可能有返回原始類型的舊(Java 5 之前)方法,因此您可以將它們傳遞給需要參數化類型的較新方法。
好吧, 3
與"3"
(一個是Integer
,另一個是String
)——這就是輸出不同的原因——第一個映射沒有要刪除的鍵。
代碼實際編譯對我來說也是一個驚喜。 我想這是不再使用原始類型的另一個原因。
另外,對我來說,輸出是
1-----INDIA
2-----USA
3-----RUSSIA
------------------
1-----INDIA
2-----USA
反之亦然。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.