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

标签 java generics

如果我使用:

    HashMap<String, Integer> test = new HashMap<String, Integer>();

或者我使用:

    HashMap test = new HashMap();

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

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

    test.put("One", new Integer(5));
    test.put("Two", new Integer(4));
    test.put("Three", new Integer(3));

并将其显示为:

设置set = tokens.entrySet();
迭代器 ik = test.iterator();

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

结果没有排序,结果为:

三:3 一:5 二:1

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

最佳答案

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

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

关于java - java中这两个对象初始化有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4299140/

相关文章:

java - 如何在 portlet 中使用 Liferay 内部代码?

java - 在带有 JFrame 表单的 Netbeans derby 中使用带有 WHERE 子句的 SELECT 语句

java - 如何在 Selenium IDE 中为 Web 目标选择正确的操作

c# - C# 中的显式方法表而不是 OO - 好吗?坏的?

typescript - 从键值对推断类型,其中值是函数签名?

java - 我应该如何解释 JVM 指令集文档中的 "Operand Stack"?

javascript - 带有表单的弹出对话框停留在提交时

java - 通用功能接口(interface)和方法引用被类型删除弄乱了

java - Comparator<String> 必须覆盖父类(super class)方法

c# - 表达式<Action<T>> 方法调用