Java中类似于Ruby Hash的数据结构是什么?

5

我非常习惯在Ruby中使用以下类型的代码:

my_hash = {}

my_hash['test'] = 1

在Java中,对应的数据结构是什么?

1
一个Map。我使用的实现是HashMap - PlasmaPower
2个回答

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

I assume?


3
如果你希望按照插入顺序迭代遍历元素,那么考虑使用LinkedHashMap - Jeffrey

4
在Java中,有许多实现Map<K,V>接口的类,这就是Ruby“hash”的数据结构(这种数据结构通常被称为“字典”,或者用其全名“散列表”)。因此,在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);

这有点类似于Ruby中的“鸭子类型”,如果一个对象响应方法调用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

你不能使用原始类型来定义泛型。TreeMap<int, String> 无法编译通过。 - Jeffrey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接