【问题标题】:Java creating instance of a map objectJava 创建地图对象的实例
【发布时间】:2012-07-27 16:54:58
【问题描述】:

希望是非常简单的问题。我想做这样的事情:

Map<String, String> temp = { colName, data };

其中colNamedata 是字符串变量。

谢谢。

【问题讨论】:

  • 尽管它现在不可用,但我相信它会出现在 Java 8 中,除非他们在我不注意的时候放弃了它。

标签: java arrays string list map


【解决方案1】:

地图是一个接口。创建一个实现它的类的实例:

Map<String, String> temp = new HashMap<String, String>();
temp.put(colName, data);

或者,在 Java 7 中:

Map<String, String> temp = new HashMap<>();
temp.put(colName, data);

【讨论】:

  • 你能解释一下为什么在 java7 中这可能吗?
  • 在 Java 7 中,添加了对在某些情况下省略类型的支持。只是为了让代码更干净一点。
【解决方案2】:

@JohnGirata 是正确的。

如果你真的不高兴,你可以看看这里http://nileshbansal.blogspot.com.au/2009/04/initializing-java-maps-inline.html

这不是你要问的,但它是一个巧妙的技巧/黑客。

【讨论】:

    【解决方案3】:

    将条目放入刚刚创建的Map 的快速方法如下(让我使用 HashMap,因为我喜欢它们):

    Map<String,String> temp = new HashMap<String,String>(){{
        put(colName, data);
    }};
    

    注意所有带有结束分号的括号!

    虽然在Java7 中您通常可以使用diamond operator 并编写类似Map&lt;String,String&gt; temp = new HashMap&lt;String,String&gt;(); 的内容,但这在将元素放入内联地图时不起作用。换句话说,如果您尝试以下操作,编译器会对您大喊大叫(不要问我为什么):

    Map<String,String> temp = new HashMap<>(){{
        put(colName, data);
    }};
    

    【讨论】:

      猜你喜欢
      • 2013-12-15
      • 2011-04-10
      • 1970-01-01
      • 2013-06-18
      • 2021-07-22
      • 2014-06-04
      • 1970-01-01
      • 2018-10-11
      • 1970-01-01
      相关资源
      最近更新 更多