从List中移除指定 List 中包含的其所有元素,这个当然用List里面的removeAll方法了,但是有朋友说能不能不用removeAll呀
于是我就写了如下代码:
List<String> l = ...; List<String> list = ....; for(int i=0;i<l.length;i++){ String s = l.get(i); if(list.contains(s)){ l.remove(s); } }
因为两个list读取的文件,运行后看着没什么错,后来无聊用了removeAll,发现结果不一样。
看代码没什么问题呀,后来经过反复实验,终于发现原来:List每remove掉一个元素以后,后面的元素都会向前移动,此时如果执行i=i+1,则刚刚移过来的元素没有被读取。
解决方法:
在remove掉一个元素后,把i减1,代码如下:
List<String> l = ...; List<String> list = ....; for(int i=0;i<l.length;i++){ String s = l.get(i); if(list.contains(s)){ l.remove(s); i--; } }
百度之后又发现另外两种方法:
1、倒过来遍历list
List<String> l = ...; List<String> list = ....; for(int i=l.length;i>=0;i--){ String s = l.get(i); if(list.contains(s)){ l.remove(s); } }
2、使用iterator.remove()方法删除
List<String> l = ...; List<String> list = ....; for (Iterator it = list.iterator(); it.hasNext();) { String s = (String)it.next(); if (list.contains(s)){ it.remove(); } }
相关推荐
随着数据的不断添加,我们也可能需要从list中移除元素,这时候就需要使用到list的删除操作了。list提供了`pop_front`和`pop_back`两个函数来分别删除list的头部元素和尾部元素。使用`pop_front`函数时,如`lt.pop_...
obj — 这是一个可选参数,该对象的索引可以从该列表中删除 返回值 此方法返回从列表中移除对象 例子 下面的例子显示了pop()方法的使用 #!/usr/bin/python aList = [123, 'xyz', 'zara', 'abc']; print A List : ,...
6. **lrem key count value**: 从列表中移除指定数量的值。 7. **ltrim key start stop**: 截断列表,只保留指定范围内的元素。 Redis 的链表操作使得它既可以用作栈,也可以用作队列。此外,`lpush` 和 `rpush` ...
- `Pop()`:从堆中移除最小元素。 - `Top()`:获取堆顶元素但不移除。 - `Heapify()`:调整堆的结构以保持性质。 #### 十五、哈夫曼树 **15.1 哈夫曼树(BinTreeNode.h, BinaryTree.h, MinHeap.h, Huffman.h, ...
- 如果某项被选中,则将其添加到`List2`中,并从`List1`中移除该项。 3. **菜品移除逻辑**: - 类似地,在`Command2_Click`事件中,循环遍历`List2`中的所有项。 - 如果某项被选中,则将其移回`List1`并从`List2...
- `StreamUtil.filterNull(stream)`:从流中移除所有`null`值。 - `StreamUtil.limit(stream, maxElements)`:限制流中的元素数量不超过指定值。 3. **合并与连接**: - `StreamUtil.concat(stream1, stream2)`...
- `remove(int index)`: 允许从列表中移除指定位置的元素。 - `set(int index, Object element)`: 允许替换列表中指定位置的元素。 通过覆盖这些方法,可以扩展列表的功能,使其支持更多的操作。 ##### 3. 实用...
创建Random对象时,通常会传递一个种子值(可选)以确定随机数序列的起始点。如果不提供种子,系统将自动使用当前时间作为种子,确保每次运行时都能得到不同的随机数序列。 创建选号系统的第一步是实例化Random对象...
- `ZRANGE key start stop [WITHSCORES]`:返回有序集合 `key` 中指定范围的成员,可选地带上分数。 - `ZREVRANGE key start stop [WITHSCORES]`:返回有序集合 `key` 中指定范围的成员,按分数降序排列。 9. **...
在Web开发中,这样的Todo List是一个经典的案例,它可以帮助初学者理解DOM操作、事件处理以及数据管理等核心概念。 【描述】"待办事项清单 JS TodoList" 提示我们这个项目主要是关于创建一个可以添加、删除和管理...
2. **向数据库添加/删除数据表**:`ADD TABLE`将数据表添加到数据库,`REMOVE TABLE`将其从数据库中移除,可选的`DELETE`子句决定是否从磁盘删除文件。 3. **建立视图**:通过`CREATE SQL VIEW`结合`SELECT`语句创建...
`deleteItem()`方法负责从数据源(如ArrayList)中移除指定位置的元素,并通知Adapter数据集已改变。Adapter通常需要提供一个`remove()`或`delete()`方法来实现这个功能: ```java public void deleteItem(int ...
- **删除(Delete)**:从数据库中移除对应的记录。 - **加载(Load)**:根据主键获取实体,如果不在缓存中则从数据库查询。 - **查询(Query)**:使用HQL(Hibernate Query Language)或Criteria API进行复杂...
`deleteItem`方法接收索引参数,用于从`list2`中移除对应的组件。 此外,还需要注意的是,`vuedraggable`提供了`@start`、`@end`等事件,可以用来在拖放开始和结束时执行额外的操作,例如禁用其他交互或提供反馈。 ...
3. **删除任务**:同样在`TodoItem`组件内,可以添加一个删除按钮,点击时触发删除任务的逻辑,通过回调函数将任务ID传递给`TodoList`,然后从任务列表中移除相应的任务。 **三、状态管理** 1. **useState Hook**...
在Android开发中,ListView是展示大量数据的一种常见视图组件,它可以滚动并显示多个行,每行通常包含多个元素。本教程将深入讲解如何在ListView中集成CheckBox,并实现全选、全不选以及删除功能。这是一项基础但...
2. 遍历这些位置,从数据源中移除对应的条目,然后调用Adapter的`notifyDataSetChanged`更新列表。 3. 清空`selectedItems`,关闭PopupWindow。 六、优化用户体验 1. 添加动画效果,如选中时的背景色变化,未选中时...
- 当一个对象从`Session`中移除后,它进入游离状态。 - 游离状态下的对象仍然保留其数据,但失去了与`Session`的关联。 #### 五、实体映射配置示例 以下示例展示了如何配置员工(Employee)与账户(Account)...