想知道实现以下目标的最优雅方式是什么:
“在列表中的每个第x项后添加项目”。
我有这个有效,但对我来说看起来很难看:
ListIterator<Something> it = items.listIterator();
int i = 0;
int breakPoint = 3;
while(it.hasNext()) {
it.next();
i++;
if(i == breakPoint ) {
it.add(new Something()....);
i = 0;
}
}
我更喜欢这样做而不使用外部库等。任何更优雅的方式也是可读的而不是依靠技巧?
答案 0 :(得分:4)
您不需要迭代器,请使用void add(int index, E element)
:
for (int i = 3; i < items.size(); i+=3) {
items.add (i++, new Something());
}
这将首先在索引3处添加一个元素。注意索引3处的原始元素将移动到索引4,这就是我在循环中有i++
的原因(因为下一个元素应该添加在指数7,而非6)。