List遍历,去除不符合条件的元素,代码如下:
private List<Product> getProductSet(List<Product> products) {
for (int i = 0; i < products.size(); i++) {
if (!hasPrice(products.get(i))) {
products.remove(i);
}
}
return products;
}
但是结果却不是把符合条件的元素去除了,原因如下:
List每remove掉一个元素以后,后面的元素都会向前移动,此时如果执行i=i+1,则刚刚移过来的元素没有被读取。
所以,正确的去除符合条件的元素代码如下:
private List<Product> getProductSet(List<Product> products) {
for (int i = products.size() - 1; i > -1 ; i--) {
if (!hasPrice(products.get(i))) {
products.remove(i);
}
}
return products;
}
问题补充:
如果使用Arrays.asList(),然后对list使用remove,add等方法,将发生java.lang.unsupportedoperationexception,所以,
必须自己写一个数组到List的转换方法,如下:
private static List<File> castArrayToList(File[] files) {
List<File> fs = new ArrayList<File>();
for (File f : files) {
fs.add(f);
}
return fs;
}
分享到:
相关推荐
当我们需要遍历List并根据条件删除特定元素时,需要注意正确的方法,以避免在遍历过程中出现错误。以下将详细介绍如何在C#中遍历List并删除元素,包括正序和倒序遍历的技巧。 首先,我们来看一下错误的遍历方式。...
在处理复杂的数据操作时,我们可能需要从列表中删除特定的元素,这可以通过 `remove()` 方法来实现。本篇文章将深入探讨如何使用 `remove()` 方法来删除结构体成员,即包含多个属性的对象实例。 首先,我们需要理解...
在C++编程中,`list` 是一个关联容器,提供了双向链表的实现。这篇文章主要讲解了`...在删除元素时,务必注意迭代器的失效问题,避免产生未定义的行为。同时,`remove`和`erase`的组合使用可以简化清除特定值的操作。
如 `@{listnew} Remove Duplicates ${list}` 创建一个没有重复元素的新列表,并通过 `List Should Not Contain Duplicates ${listnew}` 检查新列表是否不包含重复项。 5. **List Should Contain Sub List**: 检查一...
在标准模板库(STL)中,`list`容器是一个双向链表,它提供了高效的插入和删除操作,尤其是在列表的头部或尾部进行操作时,性能尤为突出。下面将详细介绍`list`的各种功能和用法。 ### 创建和初始化 1. **空list**...
在处理`ListBox`的数据操作时,我们可能会遇到需要移除特定元素的情况。标题提到的“测试`listBox1.Items.Remove`是用`ToString`还是利用`GetHashCode`来定位元素”,实际上涉及到两种不同的方法来确定元素身份。 1...
需要注意的是,这里使用`iterator.remove()`而不是`list.remove()`来删除元素,这可以避免并发修改异常。 ### 三、使用HashSet特性去除重复元素 这种方法利用了HashSet的特性,即HashSet不允许有重复的元素。将...
在使用`remove()`方法时,需要注意一些重要的细节以避免潜在的问题和错误。下面将详细介绍`List.remove()`方法的两种用法及其注意事项。 首先,`remove(int index)`方法用于根据提供的索引从列表中移除一个元素。...
C# List是.NET Framework...需要注意的是,虽然List提供了强大的功能,但是性能问题仍然是开发者需要注意的地方,尤其是当处理大量数据且数据类型为值类型时。合理选择数据结构和方法,可以有效避免不必要的性能开销。
需要注意的是,当元素被移除后,如果还在遍历过程中,记得更新当前的索引,否则可能会错过其他元素。 此外,还有其他更复杂的移动策略,例如使用Collections.swap()方法交换元素的位置,或者在特定条件下调整整个...
需要注意的是,在选择使用IList还是ArrayList类时,需要考虑性能和类型安全性问题。如果使用IList,那么在大多数情况下执行速度更快、更加类型安全,但如果使用值类型,则需要考虑装箱和取消装箱问题。
如果在多线程环境中操作集合,需要注意线程安全问题,可能需要使用`CopyOnWriteArrayList`或其他同步容器,或者对比较过程进行同步控制。 通过理解并熟练运用这些方法,我们可以有效地比较和操作两个List集合,...
这是因为 ArrayList 需要在添加和删除元素时动态调整数组的大小。 三、添加元素: ArrayList 提供了多种添加元素的方法,包括: 1. public virtual int Add(object value):将对象添加到 ArrayList 的结尾处。 ...
在ArrayList中使用remove方法移除元素时,需要注意元素索引的变化。使用倒序删除的方法可以避免元素索引的错乱,从而正确地删除ArrayList中的元素。 扩展知识 * ArrayList的 remove 方法 * for 循环的使用 * 倒序...
然而,在处理列表时,特别是在删除元素时,如果不注意一些细节,可能会遇到意想不到的问题。本文将深入探讨Python列表删除元素时需要注意的一些陷阱,并提供解决这些问题的方法。 首先,让我们来看一个常见的错误...
#### 插入与移除元素:`insert()`与`remove()` 在处理Python列表时,我们经常会遇到需要插入或移除元素的情况。`insert()`函数允许我们在列表中的任意位置插入一个新元素,而`remove()`函数则用于移除列表中的指定...
- 当需要保持元素插入顺序,并且可能需要根据索引访问或操作元素时,使用`List`接口及其实现类。 - `List`接口中的方法`add`, `remove`, `set`等操作可能会影响迭代器,因此在遍历列表时应避免修改列表,除非使用`...
最后,当原始列表为空时,所有元素都被随机插入新列表,此时返回`sortedList`即可得到随机排序后的列表。 这种方法简单易懂,但需要注意的是,由于每次插入都会遍历新列表,所以时间复杂度是O(n^2)。对于大规模数据...
在Java编程语言中,`List`接口是集合框架的重要组成部分,它提供了有序元素集合的实现,并允许重复元素的存在。本文将详细解释`List`接口中的常用方法,帮助开发者更好地理解和运用这些功能强大的工具。 #### 1. ...