2014-03-29 196 views
5

Ruby的哈希的我真的用在红宝石下面这种代码:等效于Java的

my_hash = {} 

my_hash['test'] = 1 

什么是Java中的相应数据结构?

+1

甲'Map'。我使用的实现是一个'HashMap'。 – PlasmaPower

回答

5
HashMap<String, Integer> map = new HashMap<>(); 
map.put("test", 1); 

我假设?

+3

如果你想能够迭代你的元素,它也值得考虑['LinkedHashMap'](http://docs.oracle.com/javase/8/docs/api/java/util/LinkedHashMap.html)广告订单。 – Jeffrey

3

在Java中,有许多类实现了接口,这是Ruby的“散列”(数据结构也被称为“字典”,或者其全名,“散列表” )。因此,在Java中,你可以声明接口的实例,并指定一个具体的类它,或者你可以直接申报的具体实例:

Map<String, String> definitions = new HashMap<String, String>(); 
definitions.put("dog", "a four-legged mammal that is Man's best friend"); 
definition = definitions.get("dog"); 

TreeMap<Integer, String> players = new TreeMap<Integer, String>(); 
players.put(10, "John Doe"); 
player = players.get(10); 

这是“鸭打字”的红宝石有些相似,如果一个对象响应方法调用X(),那么Ruby实际上并不关心它调用X()的什么类型的对象。

以下是一些实施Map<K,V>接口的类的列表:

  1. AbstractMap
  2. ConcurrentHashMap
  3. ConcurrentSkipListMap
  4. EnumMap
  5. HashMap
  6. Hashtable
  7. IdentityHashMap
  8. LinkedHashMap
  9. TreeMap
  10. WeakHashMap
+0

您不能拥有原始类型的泛型。 'TreeMap '不会编译。 – Jeffrey

+0

@Jeffrey固定。 – 2014-03-29 22:57:43