list如何remove
2024-10-03 20:04:22
http://blog.sina.com.cn/s/blog_621b6f0e0100s5n5.html
在java中对list进行操作很频繁,特别是进行list启遍历,这些操作我们都会,也很熟悉,但是对java中list进行删除元素,remove list中的元素就不怎么熟悉了吧,可以说很陌生,是实际操作中也很容易出错,先看看下面这个java中如何remove list 中的元素吧.
- public class test {
- public static void main(String[] args) {
- String str1 = new String("abcde");
- String str2 = new String("abcde");
- String str3 = new String("abcde");
- String str4 = new String("abcde");
- String str5 = new String("abcde");
- List list = new ArrayList();
- list.add(str1);
- list.add(str2);
- list.add(str3);
- list.add(str4);
- list.add(str5);
- System.out.println("list.size()=" + list.size());
- for (int i = 0; i < list.size(); i++) {
- if (((String) list.get(i)).startsWith("abcde")) {
- list.remove(i);
- }
- }
- System.out.println("after remove:list.size()=" + list.size());
- }
- }
大家觉得这个程序打印出来的结果是多少呢?
Java代码
- 运行结果不是:
- list.size()=5
- after remove:list.size()=0
而是:
Java代码
- list.size()=5
- after remove:list.size()=2
这是怎么回事呢?到底要如何remove list 中的元素呢?
原因:List每remove掉一个元素以后,后面的元素都会向前移动,此时如果执行i=i+1,则刚刚移过来的元素没有被读取。
怎么解决?有三种方法可以解决这个问题:
1.倒过来遍历list
Java代码
- for (int i = list.size()-1; i > =0; i--) {
- if (((String) list.get(i)).startsWith("abcde")) {
- list.remove(i);
- }
- }
2.每移除一个元素以后再把i移回来
Java代码
- for (int i = 0; i < list.size(); i++) {
- if (((String) list.get(i)).startsWith("abcde")) {
- list.remove(i);
- i=i-1;
- }
- }
3.使用iterator.remove()方法删除
Java代码
- for (Iterator it = list.iterator(); it.hasNext();) {
- String str = (String)it.next();
- if (str.equals("chengang")){
- it.remove();
- }
- }
最新文章
- 简析服务端通过GT导入SHP至PG的方法
- 通过.net反射技术实现DataReader转换成Model实体类列表
- oracle:sql函数
- 【maven】 在 MyEcplise上使用maven搭建Web项目
- [LeetCode] Find Median from Data Stream
- C/C++程序从编译到链接的过程
- 【转】java 自动装箱与拆箱
- Grid表格属性
- MVC小系列(四)【向RouteData里扔数据】
- selenium 运行之后错误提示Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output
- Java synchronized 关键字的实现原理
- phpcms通过URL传参
- IPSP问题
- 【django之博客系统开发】
- SpringMVC(十二):SpringMVC 处理输出模型数据之@ModelAttribute
- APP研发录笔记
- A Boring Question (打表)
- mysql 循环、游标
- FTP做作业用到的知识点:
- php实现备份数据库