3

我正在寻找实现一个数据结构来添加/呈现一对有序的值。例如。

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 的任何变体都不起作用,因为它们只返回基于键的值,而我想要得到的是值、值对。请注意,值/文本或数据都不是唯一的,我可能无法根据任何键获取它。另外,我不想要一个排序列表,我只需要一个有序列表。

问题是:Java 中是否有任何数据结构可用于完成此任务?

我没有遇到任何用于此目的的东西。在这种情况下,我正在考虑编写一个可以实现此目的的自定义集合。欢迎任何建议/帮助。

4

2 回答 2

2

将评论中的讨论包装成答案,因为它似乎对 OP 有用:

创建一个class Tuple,这将是你的对/三元组。
请注意,此类可以使用固定数量的参数来实现,也可以作为包含对象列表的容器来实现。

将这些Tuple对象放在一个List<Tuple>中,你就完成了。

您还可以实现hashCode()equals()使其实现Comparable到此类 - 您将能够将它与其他集合一起使用,例如TreeSetHashSet

于 2012-04-05T23:08:14.227 回答
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,对于每一个entry,写出对应List的每一项

由于您希望对其进行排序,请将 Comparator 传递给 Treemap 构造函数。

于 2012-04-05T23:12:21.440 回答