Java中的列表数组

时间:2011-11-07 13:01:17

标签: java arrays list object

在Java中,如何创建一个数组,其中每个元素都是包含一对键的对象列表。

然后给出这个数组的索引,我应该能够在索引处搜索提供单个键值并检索相应的值。

问题陈述

我有大约200万个网页名称,每个名称对应的类别(一个或多个)。

我可以使用一些哈希函数将它们向下哈希说1,00,000,但显然它们将是冲突。

我想在Java中构建一个可以存储所有这些信息的数据结构,然后给出一个网页,然后在散列后,给定索引,我可以找到网页的类别。

2 个答案:

答案 0 :(得分:9)

听起来你想要的是一组地图:

List<Map<KeyType, ValueType>> myList = new ArrayList<Map<KeyType, ValueType>>();

这是你添加地图的方式:

myList.add(new HashMap<KeyType, ValueType>());

这是您将value添加到索引i并以key为关键字的地图中的方式:

myList.get(i).put(key, value);

要在索引key的地图中搜索i,请使用:

ValueType value = myList.get(i).get(key);

修改:编辑后,我认为问题的解决方案就是使用HashMap<String, List<String>>。您可以使用webpage的名称作为键,使用类别名称列表作为值。没有必要实现自己的哈希映射(听起来就像你正在做的那样)。

答案 1 :(得分:1)

由于您在说明中添加了信息,因此我建议您使用地图地图。一切都像是@BjörnPollex所说,但是使用地图而不是列表来存储网页本身。

还有一项建议。您可能希望使用LinkedHashMap而不是常规HashMap来按照添加它的顺序检索数据。