我们如何使用允许我们插入任何索引的Java库中的List。我尝试使用ArrayList但不起作用。例如,我想插入索引50,40,60。但不是从0开始。因为我知道你必须从0开始吗?
答案 0 :(得分:2)
如果您希望能够在任何地方插入,您可以选择如何执行此类操作。第一个是插入null
,直到列表填满你想要的点。但这会很尴尬,所以我不推荐它。
我建议放弃List
的要求。您所描述的内容更像是Map
而非List
。所以我建议您使用TreeMap<Integer, V>
。
不使用list.add(index, item)
,而是使用map.put(index, item)
。这可能会做你想要的,取决于你想要使用它。并且,由于TreeMap
基于其键的自然顺序保持顺序,因此迭代它将与使用列表时的顺序相同。
如果您真的想要,您甚至可以编写自己的List
实现,其中包含TreeMap
。这将满足您的要求,虽然我真的认为这是一个坏主意。对List
执行此操作非常不典型,并且可能会在需要常规List
的代码中导致一些问题
答案 1 :(得分:0)
如果有办法区分ArrayList中的对象是“无用的”(例如,对象的另一个布尔字段表示这个),那么我们可以先在列表中添加非null但“无用”的对象,然后使用add(int index, E element)
将“有用”对象插入任何索引。