删除list中的特定元素
对于动态删除list中的特定元素,一般用linkedList,删除时有以下两种方法。
1. 循环遍历,找到要删除的元素后删除并且减少list长度。如果不减少list长度,那么就仅仅删除了元素,但没改变循环的判定条件(list.size),就会出现数组越界。
for(int i = , len = list.size(); i < len; i++){
if(list.get(i) == ){
list.remove(i);
len--;
i--;
}
}
2. List接口内部实现了Iterator接口,提供开发者一个iterator()得到当前list对象的一个iterator对象。所以我们还有一个更好的做法是:
LinkedList<Integer> list = new LinkedList<Integer>();
list.add(4);
list.add(2);
list.add(1);
list.add(1);
list.add(2); Iterator<Integer> iterator = list.iterator();
while(iterator.hasNext()){
int i = iterator.next();
if(i == 1){
iterator.remove();
}
}
结果:

分析:
由于LinkedList<Integer> list 的元素对象是Integer,所以我们通过list.iterator()得到的就是Iterator<Integer> iterator。通过循环
while(iterator.hasNext()){
int i = iterator.next();
if(i == 1){
iterator.remove();
}
}
看有没有下一个元素,如果有就继续循环,如果没有就跳出循环。在循环里的第一句写
int i = iterator.next();
得到每一个元素对象,因为iterator是Integer对象,所以可以变为int。这里的i就是循环中的得到的对象。
当这个对象的值=1的时候就remove掉。所以原来的list中删除了所有值为1的元素。
if(i == 1){
iterator.remove();
}
原理是:通过list的.iterator()方法可以得到它的迭代器对象,然后我们就可以通过迭代器进行操作了。其实iterator本身就是list,map,set的父类
全部代码:
package com.kale.list; import java.util.Iterator;
import java.util.LinkedList; public class Test { public static void main(String[] args) {
LinkedList<Integer> list = new LinkedList<Integer>();
list.add(4);
list.add(2);
list.add(1);
list.add(1);
list.add(2); Iterator<Integer> iterator = list.iterator();
while(iterator.hasNext()){
int i = iterator.next();
if(i == 1){
iterator.remove();
}
}
for (Integer i:list) {
System.out.println("element = " + i);
}
}
}
删除list中的特定元素的更多相关文章
- (转载)PHP删除数组中的特定元素的代码
(转载)http://www.jb51.net/article/30689.htm 我们知道,PHP没有提供专门删除一个特定数组元素的方法.但是可以通过unset()函数来完成这种要求比如下面的程序: ...
- PHP实现删除数组中的特定元素
方法1: <?php $arr1 = array(1,3, 5,7,8); $key = array_search(3, $arr1); if ($key !== false) array_sp ...
- python中如何删除列表中的所有元素
今天写代码的时候遇到一个小问题,Python中要删除列表中的所有元素.Python本身就提供了pop.remove.del这些删除的函数.我想着用循环实现,结果很麻烦.几番周折上了stackoverf ...
- 如何使用 Java 删除 ArrayList 中的重复元素
如何使用 Java 删除 ArrayList 中的重复元素 (How to Remove Duplicates from ArrayList in Java) Given an ArrayList w ...
- Java删除ArrayList中的重复元素
Java删除ArrayList中的重复元素的2种方法 ArrayList是Java中最常用的集合类型之一.它允许灵活添加多个null元素,重复的元素,并保持元素的插入顺序.在编码时我们经常会遇到那种必 ...
- C#如何删除数组中的一个元素
C#如何删除数组中的一个元素,剩余的元素组成新数组,数组名不变double[] arr = new double[n];需要删除的是第m+1个数据arr[m]求新数组arr.(新数组arr包含n-1个 ...
- C语言 · 删除数组中的0元素
算法提高 6-9删除数组中的0元素 时间限制:1.0s 内存限制:512.0MB 编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端移动.注意,C ...
- 删除List中指定的元素
删除List中指定的元素 CopyOnWriteArrayList是ArrayList的一个线程安全的变体实现,即可在多线程并发环境中使用 List<Map<String, Object& ...
- Java之——删除ArrayList中的反复元素的2种方法
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47414935 ArrayList是Java中最经常使用的集合类型之中的一个.它同意 ...
随机推荐
- Android studio2.3.3升级3.1.2坑
原文:https://blog.csdn.net/qq_26361871/article/details/80255141 1.grade配置Error: Could not find com.and ...
- ngResource和REST介绍
ngResource和REST介绍 一.RESTful介绍 RESTful维基百科 REST(表征性状态传输,Representational State Transfer)是Roy Fielding ...
- java学习之租车系统
背景:有三种类型的车供给用户来租用 要求:控制台用户交互界面,根据用户需求输出租车价格,结果如下: 创建租车类主要设计过程: 创建租车类 创建Car父类,包含四种属性成员,重写构造方法 创建三种 ...
- ref:Spring JDBC框架
ref:https://blog.csdn.net/u011054333/article/details/54772491 Spring JDBC简介 先来看看一个JDBC的例子.我们可以看到为了执行 ...
- java反射bean to bean
/** * Copyright © 2018 fwz Info. Tech Ltd. All rights reserved. * * @Package: com.sm.utils * @author ...
- 003.FTP客户端连接
一 命令行连接 注意: 1:命令行连接不支持目录下载,使用mget也只会将目录下文件下载,不会下载目录本身. 2:命令行连接不支持断点续传. ftp [服务端IP] -help #获取帮助 - -mg ...
- beta6
吴晓晖(组长) 过去两天完成了哪些任务 对手写输入进行了重构,然后重新捋了一下bayes的思路 展示GitHub当日代码/文档签入记录 接下来的计划 推荐算法 还剩下哪些任务 过去两天完成了哪些任务: ...
- [POI2013]Usuwanka
[POI2013]Usuwanka 题目大意: 一排\(n\)个球,有黑白两种颜色.每取走一个球会在原位置放一个水晶球.求构造一种取球方案,满足: 每次取走\(k\)个白球和\(1\)个黑球: 一次取 ...
- Codeforces Round #398 (Div. 2) A. Snacktower 模拟
A. Snacktower 题目连接: http://codeforces.com/contest/767/problem/A Description According to an old lege ...
- ios优秀的第三方框架
1.数据请求,object-c AFNetworking 网址:https://github.com/AFNetworking/AFNetworking swift Alamofire 网址:h ...