Java中是否有“标记”集合?为了澄清,我想基本上使用某种Object(例如String)对列表中的每个元素进行分类,这样我就可以通过我指定的标记引用列表中的不同对象,而不是Object类型或元素内容。
编辑:HashMap不起作用,因为列表中项目的顺序也被视为重要。我的理解是,当列表的顺序以某种方式起作用时,HashMap是不实用的。如果我在这件事上不正确,请务必纠正我。
答案 0 :(得分:3)
您正在寻找Map
。此数据结构将键映射到值。
答案 1 :(得分:3)
如果Map中的每个键映射到一组对象,您将能够使用特定标记(键)轻松查找每个对象
答案 2 :(得分:3)
不,据我所知,标准Java库中没有“标记”集合。但您可以使用Map<Tag,Set<String>>
标记字符串。
答案 3 :(得分:2)
您可以使用地图
Map<String, Object> = new HashMap<String, Object>();
您可以将String替换为您想要的任何内容。但是,您可能遇到的一个问题是,是否要使用相同的“标记”对多个对象进行分类。例如,“Cat”标记可能适用于多个唯一的cat对象,而hashMap只允许您使用“Cat”标记指向的一个Cat对象。如果这是你想要做的(一个标签指向多个对象),你需要将地图声明为:
Map<String, List<Object>> = new HashMap<String, List<Object>>();
这将创建一个HashMap,其中包含每个对象的列表,因此您可以将一个标记指向多个对象。
答案 4 :(得分:2)
如果您不限制JDK中的内容,请考虑使用Guava Multimaps。它们为集合图提供预先构建的支持。
答案 5 :(得分:1)
也许你需要Map
答案 6 :(得分:1)
这还不够详细。我们不知道是否: - 允许每个项目使用多个标签 - 每个标签允许多个项目
我将采用最广泛的解决方案,其中两个都是真的。 你需要的第一件事就是你的Tag类(我建议使用枚举)
public enum Tag {
TAG1, TAG2, TAG3; // add your tags here
}
然后,您的收藏将是一个地图,其中关键是您的对象,以及每个对象的标记列表的值。
Map<Object, List<Tag>> items = new HashMap<Object, List<Tag>>();
当然,如果您想允许任何标记而不仅仅是已知标记,您可以将“Tag”替换为字符串。
根据你想要对你的收藏品做什么,你可能想要扭转它:
Map<Tag, List<Object>> = new HashMap<Tag, List<Object>>();
我建议您首先编写列出您的规格的测试用例(单元测试),并且您的集合的设计将从它们(TDD)中有机地显示。
答案 7 :(得分:1)
如果订单很重要,请使用LinkedHashMap。
答案 8 :(得分:1)
答案 9 :(得分:0)
听起来像你想要一个hashmap