我们如何使用 Java class 中的列表来允许我们这样做
How can we use a List from Java class that allow us this
我们如何使用 Java 库中的列表来允许我们插入任何索引。我尝试使用 ArrayList 但不起作用。例如,我想在索引 50、40、60 处插入。但不是从 0 开始。因为我知道你必须从 0 开始,对吗?
如果有办法区分ArrayList中的对象是"useless"(比如对象的一个额外的boolean字段表示这个),那么我们可以先加non-null但是"useless" 对象,然后使用 add(int index, E element)
将 "useful" 个对象插入到任何索引。
如果您希望能够在任何地方插入,您有几个选项可以执行类似的操作。第一个是插入 null
s 直到列表填满到你想要的点。不过那会很尴尬,所以我不推荐它。
我建议放弃 List
的要求。你所描述的听起来更像是 Map
而不是 List
。所以我建议你使用 TreeMap<Integer, V>
.
您可以使用 map.put(index, item)
而不是 list.add(index, item)
。这可能会做你想做的,这取决于你想使用它的人。而且,由于 TreeMap
根据其键的自然顺序保持顺序,因此对其进行迭代将与使用列表时的顺序相同。
如果您真的愿意,您甚至可以编写自己的 List
实现来包装 TreeMap
。这将满足您的要求,尽管我真的认为这是一个坏主意。这样做对于 List
来说是非常不典型的,并且可能会在需要常规 List
的代码中引起一些问题
我们如何使用 Java 库中的列表来允许我们插入任何索引。我尝试使用 ArrayList 但不起作用。例如,我想在索引 50、40、60 处插入。但不是从 0 开始。因为我知道你必须从 0 开始,对吗?
如果有办法区分ArrayList中的对象是"useless"(比如对象的一个额外的boolean字段表示这个),那么我们可以先加non-null但是"useless" 对象,然后使用 add(int index, E element)
将 "useful" 个对象插入到任何索引。
如果您希望能够在任何地方插入,您有几个选项可以执行类似的操作。第一个是插入 null
s 直到列表填满到你想要的点。不过那会很尴尬,所以我不推荐它。
我建议放弃 List
的要求。你所描述的听起来更像是 Map
而不是 List
。所以我建议你使用 TreeMap<Integer, V>
.
您可以使用 map.put(index, item)
而不是 list.add(index, item)
。这可能会做你想做的,这取决于你想使用它的人。而且,由于 TreeMap
根据其键的自然顺序保持顺序,因此对其进行迭代将与使用列表时的顺序相同。
如果您真的愿意,您甚至可以编写自己的 List
实现来包装 TreeMap
。这将满足您的要求,尽管我真的认为这是一个坏主意。这样做对于 List
来说是非常不典型的,并且可能会在需要常规 List