所以我对HashMap
Java中的s 有两个问题:
HashMap
什么?我认为在我的情况下最好使用:HashMap x = new HashMap();
但是Eclipse一直建议我使用:
HashMap<something, something> map = new HashMap();
哪个更好?
HashMap
将不同类型的对象/数据类型保存为值吗?例如,是否可以正常工作: map.put("one", 1);
map.put("two", {1, 2});
map.put("three", "hello");
在第一个中put()
,我想要一个int
a作为值,在第二个中,我想要int[]
一个字符串。用HashMap
s
在Java中可以吗?另外,可以将a HashMap
作为值存储在HashMap
?中吗?
这实际上取决于您需要哪种类型的安全性。最好的非通用方式是:
Map x = new HashMap();
请注意,x
键入为Map
。这使将来更改实现(更改为TreeMap
或LinkedHashMap
)变得容易得多。
您可以使用泛型来确保一定级别的类型安全:
Map<String, Object> x = new HashMap<String, Object>();
在Java 7及更高版本中,您可以执行
Map<String, Object> x = new HashMap<>();
上面虽然比较冗长,但却避免了编译器警告。在这种情况下的内容HashMap
可以是任意Object
,这样可以Integer
,int[]
等这是你在做什么。
如果您仍在使用Java 6,则Guava库(尽管很容易自己做)具有一种称为的方法newHashMap()
,该方法可以避免在执行时复制通用类型信息new
。它从变量声明中推断类型(这是Java
7之前的构造函数不可用的Java功能)。
顺便说一句,当您添加一个int或其他原始类型时,Java会将其自动装箱。这意味着该代码等效于:
x.put("one", Integer.valueOf(1));
您当然可以将a
HashMap
作为值放置在另一个值中HashMap
,但是我认为如果递归地进行操作(将HashMap
a作为值本身放置)会出现问题。
我在我的程序中使用了HashMap,它工作得很好,但是我不明白HashMap的这些初始化之间的区别。 假设我正在实现一个HashMap,其中字符为键,整数为值。这两者之间有什么区别?
问题内容: 我不熟悉Java,而是通过创建一个简单的NaiveBayes分类器进行练习的。我还是对象实例化的新手,想知道如何初始化HashMaps的HashMap。在将新观察值插入分类器时,我可以为给定类中的看不见的功能名称创建新的HashMap,但是我需要初始化吗? 请注意,这个问题并非专门针对朴素贝叶斯分类器,只是认为我会提供一些上下文。 问题答案: 是的,您需要对其进行初始化。 当您想向cl
问题内容: 我应该传递什么值来为N个项目创建有效的/ 基于结构的结构? 在中,有效数字为N(N已假定未来增长)。a的参数应该是什么?((int)(N * 0.75d),0.75d)?更多?减?更改负载系数有什么影响? 问题答案: 关于负载因子,我将简单引用HashMap javadoc : 通常,默认负载因子(.75)在时间和空间成本之间提供了很好的折衷。较高的值会减少空间开销,但会增加查找成本(
如果我写 而不是 或者与之相反 第一个在任何方面都不安全吗?
问题内容: 这是我的情况。我正在使用两个java.util.HashMap将一些常用数据存储在Tomcat上运行的Java Web应用程序中。我知道每个Hashmap中的确切条目数。键分别是字符串和整数。 我的问题是,设置初始容量和负载系数的最佳方法是什么? 我是否应该将容量设置为等于其将要包含的元素数量,并将负载容量设置为1.0?我希望在不占用过多内存的情况下获得绝对最佳的性能。但是,恐怕该表无
问题内容: 用RefluxJS异步初始化数据的正确方法是什么?是否有类似于AngularJS的解决方案,或者Flux的实现与此无关(路由器应该处理此职责)? 问题答案: 在应用程序的顶级组件中,使用方法(docs)触发获取数据的操作。最初渲染组件时将调用此方法。 例如: