我有一个如下所述的数组列表(我的代码段)。
我的列表元素最初的顺序是- (“周期性”、“多个”、“单个”、“后续”、“连续”)。
在我的List元素上应用**Collections.rotate()**后,修改后的List应该看起来像-
- (“周期性”、“后续”、“多个”、“单个”、“连续”)*。
元素“后续”需要向后移动到列表中的第一个索引元素“多个”,以便在旋转后将第一个索引处的元素下推到第二个索引。
当我尝试使用**Collections.rotate()**时,它抛出一个Exception。
非法参数异常**“fromIndex〉toIndex”**。
我研究并理解了错误,toIndex应该总是大于或等于fromIndex,但我不太清楚如何修改代码片段以实现我需要的内容。
任何建议将不胜感激。
是否可以使用**rotate()**方法在List中向后移动元素?
List<String> list = new ArrayList<String>(Arrays.asList("Periodic", "Multiple", "Single", "Subsequent", "Consecutive"));
for (int i = 0; i < list.size(); i++) {
int indexOfSubName = 0;
int indexOfMultipleName = 0;
String name = list.get(i);
if (name.equalsIgnoreCase("Subsequent")) {
indexOfSubName = list.indexOf(name);
}
if (name.equalsIgnoreCase("Multiple")) {
int indexOfMultipleName = list.indexOf(name);
}
Collections.rotate(list.subList(indexOfSubName , indexOfMultipleName ), 1);
}
3条答案
按热度按时间jckbn6z71#
两个问题:
如果运行此命令,您将得到所需输出:
n3ipq98p2#
Almas是正确的,但代码可以更简洁一点:
可以将子列表向前旋转1距离或向后旋转-2距离以获得相同的效果。
kqlmhetl3#
实际上,list在将项目添加到某个索引时会自动执行,而不需要使用rotate:
输出: