是否有允许存在差距的列表实现?

时间:2014-12-08 14:58:28

标签: java data-structures collections

我正在寻找一个可以填补空白的集合。目标是:

  • 每个元素在集合中都有一些有意义的索引。
  • 收集是稀疏的而不是连续的;它的大小应该返回适​​当元素的数量,因此用null初始化的解决方法是行不通的。
  • subList方法需要根据索引间隔访问子列表

示例用例:

List<Integer> list = /* ? */;
list.add(0,5);
list.add(1,4);
list.add(5,3);
for( Integer i : list )
{
    System.out.print( i + " " );
}
/* desired output : "5 4 3 "*/

2 个答案:

答案 0 :(得分:5)

使用Map<Integer,Integer>。键是你的索引,值是列表的值。

对于您的子列表要求,也许TreeMap<Integer,Integer>可以正常工作,因为它可以对键进行排序,并且可以轻松迭代子列表。

当然这意味着您无法使用List界面。如果您必须使用List界面,则可以使用List支持自己的TreeMap实施(例如,list.add(5,3)会调用map.put(5,3))。< / p>

答案 1 :(得分:0)

您可以使用Map并仅设置所需的密钥。

如果需要,您可以保留广告订单,请查看:Java Class that implements Map and keeps insertion order