Storing Key, Value Pair using java

2019-04-12 06:42发布

问题:

I would like to know the best data structure used in java suitable for the following senario.

  1. There is a key and a value.
  2. And the key is not duplicated,
  3. Each Value should store collection of objects where the values in each object will change frequently.

Thanks.

回答1:

HashMap should serve your need.

HashMap allows you to store key value pairs as a collection. HashMap does not allow duplicate keys. You can use different collection to be stored as a value in your HashMap. For example to create a map with keys as a String and value as a list, the define it like this:

Map<String, List<String>> = new HashMap<String, List<String>>();

Also there are implementations for such collection called MultiMap i.e map where a key is associated with collection of values. Two popular implemantations of MultiMap are:

  • Apacha MultiMap
  • Guava MultiMap


回答2:

A type of map. You aren't saying much besides "I need a key-value thingy". If you need to iterate the map by insertion order, there is a LinkedHashMap. If you need to iterate the map by ascending or descending key values, there are sorted maps. If the map will be shared by multiple threads a concurrent map will be useful. If there will be billions of items in the list and you don't mind hemorraghing data (say this is a caching algorithm), a WeakHashMap is for you.

If by "key is not duplicated" you mean it is a violation if a key is inserted if it already exists, you have a few options.