【发布时间】:2012-10-06 02:00:53
【问题描述】:
我试图为我的数据数组找到合适的数据结构。我更喜欢支持插入操作的(插入到列表中间)。
如果没有这种Java内置的数据结构,有什么好的实现方式呢?
例如如果我使用ArrayList<String>,它似乎不支持在列表中间插入,如何更好地实现insert(int pos, String str)?
【问题讨论】:
标签: java arrays list linked-list
我试图为我的数据数组找到合适的数据结构。我更喜欢支持插入操作的(插入到列表中间)。
如果没有这种Java内置的数据结构,有什么好的实现方式呢?
例如如果我使用ArrayList<String>,它似乎不支持在列表中间插入,如何更好地实现insert(int pos, String str)?
【问题讨论】:
标签: java arrays list linked-list
查看ArrayList.add 方法(在ArrayList 实现的List 接口中声明)
在此列表中的指定位置插入指定元素。将当前位于该位置的元素(如果有)和任何后续元素向右移动(将它们的索引加一)。
【讨论】:
UnsupportedOperationException”。该语言要求您实现它,但为您提供了永远不应该调用的始终失败实现的选项。 (对于List,这是明确记录的:“抛出:UnsupportedOperationException - 如果此列表不支持添加操作”)
任何实现List的类都可以做你想做的事。
看看 List.add(),它在给定索引处插入一个对象。
如果您想替换现有项目,请查看List.set()。
add() 方法是 List 接口的一部分...
但是,正如 Bhesh Gurung 回答中的 cmets 所暗示的,并非所有列表都支持它。
因此,我会接受 Bhesh Gurung 的回答(正如你已经回答的那样)。
【讨论】:
Set 和List 有什么关系?
我认为你应该看看LinkedList add(int, E) 方法,与 ArrayList 相比,它在列表中间插入提供了更好的性能。
【讨论】: