linkedhaspmap和linkedhashmap之间的区别<integer,string>

时间:2015-07-06 06:12:15

标签: java collections

我创建了两个地图,如下所示。任何人都可以解释为什么程序的输出是这样的,为什么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

2 个答案:

答案 0 :(得分:0)

您在问题中输出的输出不是此代码实际产生的输出,即:

1-----INDIA
2-----USA
3-----RUSSIA
------------------
1-----INDIA
2-----USA

第二个Map具有String键和String值。因此,仅针对第二个地图mymap.remove("3");从地图中删除条目。

mymap.remove("3");已通过编译,即使mymapLinkedHashMap<Integer, String>,因为remove接受Object类型的参数。

由于向后兼容性,

deleteContent允许您将原始LinkedHashMap类型传递给它。您可能有旧的(pre-Java 5)方法返回原始类型,因此您可以将它们传递给期望参数化类型的新方法。

答案 1 :(得分:0)

好吧,3"3"不同(一个是Integer,另一个是String) - 这就是输出不同的原因 - 第一个地图没有要删除的密钥。

代码实际编译对我来说也是一个惊喜。我猜这是不再使用原始类型的另一个原因。

另外,对我来说输出是

1-----INDIA
2-----USA
3-----RUSSIA
------------------
1-----INDIA
2-----USA

不是相反。