【发布时间】:2013-11-12 00:04:05
【问题描述】:
我有一个自定义类Disks,它存储CD 的各种信息,例如标题、长度、艺术家等。这些Disks 对象存储在ArrayList 中,它只能添加Disks 的元素。我正在使用一种方法来根据匹配它们的标题来搜索这些对象。它接受用户输入,然后遍历列表的每个元素,并比较用户关键字和 CD 的标题。如果完全匹配,则将其信息返回给用户。
我想通过合并一个 HashMap 来稍微改变这个搜索机制。我希望对每个 Disks Title 进行标记,然后为关键字创建一个映射条目。
下面是一个示例:“汽车”一词出现在位置 0、5、7 的ArrayList 元素的标题中。我希望能够为“汽车”创建一个映射条目,该条目将是一个列表 [0,5,7]。如果将另一个元素添加到位置 10 的 ArrayList,标题中带有“Cars”,我将如何修改旧的映射条目以使新列表为 [0,5,7,10]?
最后我希望用户搜索标题关键字“Loud Cars”。我会先在索引中找到“loud”得到[0,7,5]的列表(例如),然后找到“cars”得到[0,5,7,10]的列表。然后,我将找到这些列表相交的位置并返回与这些位置对应的ArrayList 元素。
我当前的 HashMap 声明如下所示:public HashMap<String, ArrayList<Integer>> map = new HashMap<>(); 然而,即使 Key 不同,存储在 ArrayList 中的值也是相同的,因为它们只有一个。
我的Disks ArrayList 是:public ArrayList<Disks> items; 有没有办法将此 ArrayList 合并到 HashMap 的 Value 中?
【问题讨论】:
-
however even when the Key is different, the values stored in the ArrayList are the same because there is only one of them.你能说得更具体点吗?为什么只有索引 ArrayList 的一个实例?另外,你能告诉我们你是如何将这对夫妇添加到地图上的吗? -
因为随着可能键的数量增加,我不需要新的索引 ArrayList 吗?
标签: java search arraylist hashmap