Wei*_*Hao 4 java data-structures
目前我正在使用ArrayList来存储元素列表,因此我需要在特定位置插入新元素.我需要在大于当前大小的位置输入元素.例如:
ArrayList<String> arr = new ArrayList<String>();
arr.add(3,"hi");
Run Code Online (Sandbox Code Playgroud)
现在我已经知道会有一个OutOfBoundsException.还有其他方式或其他对象我可以在保持订单的同时做到这一点吗?这是因为我有方法根据索引查找元素.例如:
ArrayList<String> arr = new ArrayList<String>();
arr.add("hi");
arr.add(0,"hello");
Run Code Online (Sandbox Code Playgroud)
我希望现在在索引1而不是索引0处找到"hi".
总而言之,如果没有手动将null插入到中间的元素中,有没有办法满足这两个要求:
我看过Java ArrayList添加当前大小以外的项目,以及HashMap,但HashMap不满足我的第二个标准.任何帮助将不胜感激.
PS Performance现在不是一个真正的问题.
UPDATE:已经有关于我为什么有这些特定要求的一些问题,那是因为我工作的经营转型,在那里我将一组操作成,比方说,我的名单(数学公式).每个操作都包含一个字符串 当我在列表中插入/删除字符串时,我将通过跟踪已经应用的每个操作来动态更新未应用的操作(如果需要).我现在的解决方案是使用ArrayList的子类并覆盖一些方法.我当然想知道是否有更优雅的方式这样做.
你的要求是矛盾的:
......我需要在特定位置插入新元素.
我需要在大于当前大小的位置输入元素.
这意味着职位稳定; 即,给定位置的元素保持在该位置.
我希望现在在索引1而不是索引0处找到"hi".
这表明在某些情况下头寸不稳定.
你真的需要决定你需要的替代方案.
如果您必须有稳定的位置,请使用TreeMap或HashMap.(A TreeMap允许您遍历为了钥匙,但更昂贵的插入和查找...的成本大集合).如果必要,可以使用"位置"键类型,可以让你"总是"产生新的任何现有密钥之间的密钥.
如果您不必拥有稳定的位置,请使用ArrayList,并处理必须使用插入超出最终位置的情况append.
我没有看到如果你插入到最后位置是稳定的,并且如果插入中间则允许不稳定.(此外,后者最终会使前者变得不稳定......)