令人困惑的Java数据结构 - 自己类的静态HashMap

时间:2014-08-22 09:32:52

标签: java

我是Java初学者。最近我尝试研究我公司系统的Java代码,并提出了一个非常令人困惑的数据结构。它是HashMap的静态变量,但HashMap是类的类型......

这是一个例子。

public class CustomerList{
    static ByteHashMap<CustomerList> Element1 = new HashMap<CustomerList>();
    static ByteHashMap<CustomerList> Element2 = new HashMap<CustomerList>();
    static ByteHashMap<List<CustomerList>> Element1 = new HashMap<List<CustomerList>>();
....
}

任何人都可以向我解释这种数据结构的目的吗?我应该从什么角度理解这种数据结构? 编辑:ByteHashMap来自一个开源库

2 个答案:

答案 0 :(得分:0)

我怀疑您发布的内容是有效代码,因为MapHashMap采用了2种参数类型,即Map<K, V>

如果您实际上是在询问在类级别上设置自己类型的静态结构的做法,那么可以。它是保持某个类的全局集合的便捷方式。一个示例用法是当您希望在对象等于时确保==相等并返回唯一实例。

答案 1 :(得分:0)

在HashMap的第一个例子中,我们将创建对象并将其添加到Map中。如果您不使用Java 1.4,请始终使用泛型。下面的代码将使用String类型的键和具有默认大小和加载因子的Integer类型的值创建HashMap。

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

或者你可以通过从另一个Map或Hashtable复制数据来创建HashMap,如下例所示:

Hashtable<Integer, String> source = new Hashtable<Integer,String>();
HashMap<Integer, String>  map = new HashMap(source);

通过使用API​​中提供的重载构造函数,您还可以在创建实例时提供加载因子(大小的百分比,如果全部触发HashMap的大小调整)和initialiCapacity。添加元素(也称为put操作)需要键和值对象。以下是在Java HashMap中添加键和值的示例:

map.put(21, "Twenty One");
map.put(21.0, "Twenty One"); //this will throw compiler error because 21.0 is not integer

了解更多详情,请参阅

http://java67.blogspot.in/2013/02/10-examples-of-hashmap-in-java-programming-tutorial.html