java - 在添加或删除其中的项目时保持初始列表项顺序
问题描述
我需要能够从列表中删除项目并将它们重新插入,同时保持相同的顺序。我的清单从最初的一组项目开始。无法插入新项目。因此,added-items 和 max-item-count 保持不变。
例子:
我的初始清单如下
0=201, 1=402, 2=952, 3=101, 4=-54, 5=0
如果我删除 2、4 个位置的项目,我有
0=201, 1=402, 3=101, 5=0
但是,当我将已删除位置的项目添加回列表时;{2, 4},我有
0=201, 1=402, 3=101, 5=0, 2=952, 4=-54
我希望按初始顺序添加项目。IE
0=201, 1=402, 2=952, 3=101, 4=-54, 5=0
它们必须按照删除时的原始顺序。这只是一个示例,这些值无法排序。它们按照添加的顺序排列。
如果您建议使用原件的备份列表,我如何确定当前列表的正确相邻位置?因此,如果原始列表有 6 个项目,并且值-54
位于4
索引处。我从列表中删除 {2, 3, 4} 项。新列表的大小更改为 3。我无法将4
原始列表中索引处的项目添加到索引处的新列表中4
。新列表将只有 {0, 1, 2} 作为有效位置。此外,这甚至可能无法维持秩序。
所以问题是,我怎样才能删除元素并将其添加到列表中并确保保持顺序?
另外,这应该用 LinkedList 来完成吗?如果是,如何?
编辑:原始列表是一个 ArrayList。我无法修改这种类型。当然,在确定正确的索引后,我需要从另一个集合中为其提供项目。
解决方案
首先获取原件的备份列表,但在Map <Index, Map<oldValue, NewValue>>
(根据您的要求)。如果您从ArrayList
将新值标记为null
地图中的任何项目中删除。
推荐阅读
- python-3.x - Python3:TypeError:序列项0:预期的str实例,找到列表
- java - 加载我的应用程序时的android生命周期问题
- python - 在 Windows 中以编程方式复制、重命名和粘贴文件的最佳方法
- c# - 如何创建列表
在使用枚举的控制器中 - r - 如何使用 R 语言在基于多个二进制变量的数据框中创建新变量?
- javascript - 切换 React Native Firestore
- c# - LINQ 生成意外 SQL
- c++ - c++ std 库实现者在为 remove_cvref 模板添加专业化时警告未定义行为的关注点是什么?
- selenium-webdriver - 调用浏览器时出现问题
- javascript - 突然出现关于“从不”类型的打字稿错误无处不在