java中这两个对象初始化有什么区别?

Mav*_*vin 3 java generics

如果我使用:

    HashMap<String, Integer> test = new HashMap<String, Integer>();
Run Code Online (Sandbox Code Playgroud)

或者我使用:

    HashMap test = new HashMap();
Run Code Online (Sandbox Code Playgroud)

我可以在测试对象上应用的其他方法有什么不同.像test.put(),test.get()等,如果初始化不同??

此外,如果我在测试对象中放置一些东西,例如:

    test.put("One", new Integer(5));
    test.put("Two", new Integer(4));
    test.put("Three", new Integer(3));
Run Code Online (Sandbox Code Playgroud)

并将其显示为:

设置set = tokens.entrySet();
Iterator ik = test.iterator();

    while(ik.hasNext()){
      Map.Entry me = (Map.Entry)ik.next();
      System.out.println(me.getKey() + " : " + me.getValue() );
Run Code Online (Sandbox Code Playgroud)

结果没有排序,restul是:

三:3一:5两:1

它遵循什么规则?输出的这种正常行为是否随机显示?

Joo*_*ing 7

在第一种情况下,Hashmap键必须是字符串,值必须是整数.编译器将执行相应的类型检查.在第二种情况下,可以使用任何类型的对象.

您的HashMap条目以随机顺序打印是完全正常的.如果要保留订单,请改用LinkedHashMap.