我希望实现一个可以添加/呈现有序值对的数据结构。例如。
orderedPair.add(value1, text1)
orderedPair.add(value1, text2)
orderedPair.add(value2, text3, data1)
orderedPair.add(value2, data2)
orderedPair.add(value1, text5)
当我得到时,我希望它以迭代方式返回
value1, text1
value1, text2
value2, text3, data1 and so on.
LinkedHashMaps或HashMaps的任何变体都不起作用,因为它们只返回基于键的值,而我想要获得的是值,值对。请注意,值/文本或数据都不是唯一的,我可能无法根据任何键获取它。另外,我不想要排序列表,我只需要一个ORDERED列表。
问题是:Java中是否有可用于实现此目的的数据结构?
我没有遇到任何有此目的的人。在这种情况下,我正在考虑编写一个可以实现此目的的自定义集合。欢迎任何建议/帮助。
答案 0 :(得分:2)
将评论中的讨论包含在答案中,因为它似乎对OP有用:
创建一个class Tuple
,这将是你的对/三元组。
请注意,此类可以使用固定数量的参数实现,也可以作为包含对象列表的容器实现。
将这些Tuple
个对象保存在List<Tuple>
中,您就完成了。
您还可以实施hashCode()
,equals()
并对此类实施Comparable
- 您将能够将其与其他集合(例如TreeSet
和HashSet
。
答案 1 :(得分:0)
只需使用列表地图,例如Treemap
Map<Integer, List<Integer>> content = new Treemap<Integer, List<Integer>>();
if (not content.containsKey(value1)) {
content.put(value1, new LinkedList<Integer>());
}
content.get(value1).add(text1)
这将是orderedPair.add函数
然后对于输出,遍历Map并为每个条目写出相应List的每个项目
由于您希望对其进行排序,请将Comparator传递给Treemap构造函数。