【问题标题】:Array of lists in JavaJava中的列表数组
【发布时间】:2011-12-23 14:58:53
【问题描述】:

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

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

问题陈述

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

我可以使用一些散列函数将它们散列到 1,00,000,但显然它们会发生冲突。

我想用Java构建一个可以存储所有这些信息的数据结构,然后给定一个网页,然后,经过哈希处理,给定索引,我可以找到网页的类别。

【问题讨论】:

标签: java arrays list object


【解决方案1】:

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

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);

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

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

编辑:编辑后,我认为解决问题的方法是简单地使用HashMap&lt;String, List&lt;String&gt;&gt;。您将使用 webpage 的名称作为键,使用类别名称列表作为值。无需实现您自己的哈希映射(听起来您就是这样做的)。

【讨论】:

  • 我有一个对象 webpagenamecategory 。列表的每个元素都应该是 webpage
  • @Rohan:您应该使用HashMap&lt;String, WebPage&gt; 并使用name 作为密钥。通过这种方式,您可以获得非常快速的查找。如果这不是您想要的,请花时间改进您的问题描述。
【解决方案2】:

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

还有一个建议。可能您会想要使用LinkedHashMap 而不是常规的 HashMap 以便能够以与添加数据相同的顺序检索数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 2011-10-31
    • 2021-11-28
    • 2013-05-23
    相关资源
    最近更新 更多