【问题标题】:Can HashMap contain custom class for key/value?HashMap 可以包含键/值的自定义类吗?
【发布时间】:2014-07-14 13:45:17
【问题描述】:

在HashMapK,V>中,KV可以是自定义类对象而不是包装器类对象??

import java.util.HashMap;
import java.util.Map;

public class Test {

    public static void main(String[] args) {
        Test test=new Test();       
        HashMap<String, test> a= new HashMap<String, test>();
    }
}

发生错误:无法将测试解析为类型。

提前致谢。 问候。

【问题讨论】:

  • test 应该是什么?
  • 这与HashMap无关,与泛型有关。阅读这些内容。
  • test 不是一个类型,它是一个对象实例。注意上面一行的实例化。你所写的就像为第一个对象放入一个实际的字符串而不是 String 类型。
  • 需要测试类对象作为 HashMap 中的值。测试类将包含一些公共字符串变量。
  • 你如何在HashMapput 对象?

标签: java hashmap


【解决方案1】:

HashMap 是泛型类型。因此,我们可以将任何类型的对象作为键和值传递。

但是如果你想在HashMap中指定Key & values的类型你可以通过写类名来指定。

但是在您的代码中,您使用了对象测试来指定对象类型。 所以你应该写这样的东西

HashMap map=new HashMap(); map.put("string1",new Test());

【讨论】:

    【解决方案2】:

    在 hashmap 中,是的,您可以将自定义类型包含为键/值对。

    但这不应该是 object ,它肯定是 type

    表示class,您可以提及它成为自定义类型的type

    例子,

    您可以将字符串类型变量定义为String s = "abc";

    现在 如果我们尝试像下面这样写

    HashMap<String, s> a= new HashMap<String, s>();
    

    它不会编译,因为's' 不是类型,而是String 类型的对象,

    因此它应该如下所示

    HashMap<String, String> a= new HashMap<String, String>();
    

    所以你的代码如下所示

    Test test=new Test();       
            HashMap<String, test> a= new HashMap<String, test>();
    

    应该变成

    Test test=new Test();       
            HashMap<String, Test> a= new HashMap<String, Test>();
    

    【讨论】:

      猜你喜欢
      • 2017-04-24
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多