use*_*166 -4 java loops for-loop list arraylist
所以假设我有一个迭代字符串列表的for循环.字符串列表就像
List<String> myString = {NEW ROW, cs, 1, 2, 3, NEW ROW, tp, 3, 4, 5}
Run Code Online (Sandbox Code Playgroud)
我希望for循环遍历列表并在每次NEW ROW出现在列表中之后删除NEW ROW和下一个x元素.
我怎样才能做到这一点?
我的尝试:
for (int index = 0; index < myList.size(); index++) {
if (myList.get(index).equals("NEW ROW")) {
for (int j = index; j < index + x; j++) {
myList.remove(j);
}
index = index + x;
}
}
Run Code Online (Sandbox Code Playgroud)
我的尝试不起作用.
您可以使用list iterator来简化代码,并避免完全使用索引数学:
for (Iterator<String> iterator = myString .iterator(); iterator.hasNext();) {
String string = iterator.next();
if (string.equals("NEW ROW")) {
// Call iterator.remove() x times,
// or until the list runs out of elements
for (int i = 0 ; iterator.hasNext() && i != x ; i++) {
iterator.remove();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这适用于LinkedList实施.如果你使用ArrayList实现,你最好在一个循环中完成所有操作:
int read = 0, write = 0;
while (read < myList.size()) {
String s = myList.get(read);
if (s.equals("NEW ROW")) {
read += x;
} else {
myList.set(write++, s);
read++;
}
}
// Trim the end of the list
for (int last = myList.size()-1 ; last >= write ; last--) {
myList.remove(last);
}
Run Code Online (Sandbox Code Playgroud)
此实现将您要保留的项目移动到列表的开头,然后修剪结束元素.
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |