使用什么数据结构?

时间:2010-11-15 08:10:25

标签: java data-structures linked-list hashmap chaining

我需要存储以下数据;

Clampls = {"23e23e", "ff333g", "fhgswq"," h65h3", "ffwwf", "34rf3"}
KJAS3.2 = {"f34f4f", "43rf2d", "3rfas1"," 1122d", "fff42", "ff33f"}
...

我在考虑存储类似这样的东西

 Name        Tokens
  .       -> ... , ... , ... , ...
  .       -> ... , ... , ... , ...
Clampls   -> "23e23e" , "ff333g" , "fhgswq" , ... 
KJAS3.2   -> "f34f4f" , "43rf2d" , "3rfas1" , ...  
  .       -> ... , ... , ... , ...
  .       -> ... , ... , ... , ...

有点像HashMap。我在我的书 Data Structures& Java中的算法,R。Lafore 和我发现我需要的是Separate Chaining / HashChain,但是他们使用自己构建的数据结构类来解释它。

我可以在java中使用HashChain的“现成”集合吗?像

这样的东西
Map<String, []String> theMap = new HashMap<String, []String>(); //just an example

2 个答案:

答案 0 :(得分:6)

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

dataStructure.put("Clampls", Arrays.asList("23e23e", "ff333g", "fhgswq"," h65h3", "ffwwf", "34rf3"));
dataStructure.put("KJAS3.2", Arrays.asList("f34f4f", "43rf2d", "3rfas1"," 1122d", "fff42", "ff33f"));

dataStructure.put("KJAS3.3", new ArrayList<String>());
dataStructure.get("KJAS3.3").add("fhgswq");

答案 1 :(得分:2)

你的问题不是很清楚,所以这个答案可能会被取消。如果要为给定键设置多个值,则应使用MultiMap。 JDK中没有实现,但在公共库中有很多实现,例如Google Guava(包含以前的Google Collections)。

Map<String,List<String>>等替代方案有效,但使用起来很尴尬,例如如果密钥不存在,你必须自己创建“内部”列表。