`
- 浏览:
623008 次
- 性别:
- 来自:
上海
-
在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();
}
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在Java编程语言中,`List.removeAll()`方法是一个非常实用的函数,它允许我们从列表中一次性移除所有指定元素。这个方法是集合框架的一部分,它提供了高效的方式来进行元素的删除操作。本文将深入探讨`removeAll()`...
这篇文章主要讲解了`list`中的两个重要成员函数`erase`和`remove`,它们用于删除链表中的元素。理解这两个函数的正确用法对于编写高效且无误的C++代码至关重要。 首先,`erase`函数的主要作用是删除链表中特定位置...
总结一下,使用 `list` 的 `remove()` 方法删除结构体成员(对象实例)的关键在于找到要删除的元素,并根据其唯一的标识进行匹配。在实际编程中,我们还需要考虑到异常处理和对原列表的影响,以及选择合适的删除策略...
标题提到的“测试`listBox1.Items.Remove`是用`ToString`还是利用`GetHashCode`来定位元素”,实际上涉及到两种不同的方法来确定元素身份。 1. **ToString()** 方法: 在C#中,`ToString()`是一个基础方法,用于将...
List mList = new ArrayList(); mList.add(1); mList.add(2); mList.add(3); mList.add(4); mList.add(5); /** * 正常删除 */ for (int i = 0;... mList.remove(i); } } printList(mList)
JAVA LIST接口的REMOVE重载方法调用原理解析 JAVA中的LIST接口提供了多个重载的REMOVE方法,分别传入参数为索引index、Object、Integer等,这些重载方法的调用原理是什么?在实际开发中,我们经常会遇到这种情况,...
- **语法**:`list.remove(obj)` - **参数**: - `obj`:任何数据类型,将在列表中被移除。 - **示例**: ```python my_list = [1, 2, 3, 4, 2, 5] my_list.remove(2) print(my_list) # 输出: [1, 3, 4, 2, 5] ...
list.remove( element ) 1 参数 element:任意数据类型(数字、字符串、列表等) 2. 删除普通类型元素 删除一个列表中「存在」的数字或字符串 list1 = ['zhangsan', 'lisi', 1, 2] list1.remove(1) # 删除数字 ...
public List removeDuplicate(List list) { HashSet h = new HashSet(list); list.clear(); list.addAll(h); return list; } ``` **解释:** 此方法利用`HashSet`不允许重复元素的特点进行去重,再将结果添加...
在C#编程中,`List<T>`是.NET框架中常用的一种动态数组,它属于泛型集合,提供了丰富的功能,使得在处理一系列数据时更加灵活高效。`List<T>`类是`System.Collections.Generic`命名空间的一部分,它实现了`IList<T>`...
列表可以通过索引来访问元素,并支持多种操作,如添加元素(append、extend)、删除元素(remove、pop)、排序(sort)等。 2. **列表复制**:将一个列表的内容完全复制到另一个列表,可以使用 `copy()` 方法或切片...
题目9涉及链表操作,需要实现`ListNext`、`ListInsert`和`ListRemove`函数。`ListNext`通过检查`cur->next`获取下一个节点;`ListInsert`需找到合适位置插入新节点,保持id排序;`ListRemove`需找到目标节点并断开...
`remove()`方法是`List`接口中的一个关键操作,用于从列表中删除指定的元素或根据索引移除元素。在使用`remove()`方法时,需要注意一些重要的细节以避免潜在的问题和错误。下面将详细介绍`List.remove()`方法的两种...
如 `@{listnew} Remove Duplicates ${list}` 创建一个没有重复元素的新列表,并通过 `List Should Not Contain Duplicates ${listnew}` 检查新列表是否不包含重复项。 5. **List Should Contain Sub List**: 检查一...
int list_remove(struct list *list, int index); void list_set(struct list *list, int index, int value); void list_add(struct list *list, int index, int value); int list_lookup(struct list *list, int ...
public static void removeDuplicate(List list) { for ( int i = 0 ; i < list.size() - 1 ; i ++ ) { for ( int j = list.size() - 1 ; j > i; j -- ) { if (list.get(j).equals(list.get(i))) { list....
在Windows命令提示符中,输入`diskpart`进入磁盘分区工具,然后输入`list disk`查看所有磁盘,找到你的U盘或移动硬盘对应的编号。 3. 接着,输入`select disk n`(n为刚刚记下的设备编号),选择目标磁盘。 4. 输入`...
list.remove("Element to remove"); ``` #### 6. 查询元素 ```java // 检查元素是否存在 boolean contains = list.contains("Element1"); // 查找元素的位置 int index = list.indexOf("Element1"); ``` #### 7....
aList.Remove("a"); 结果为 bcde。 2. public virtual void RemoveAt(int index):移除 ArrayList 的指定索引处的元素。 例如:ArrayList aList = new ArrayList(); aList.Add("a"); aList.Add("b"); aList.Add("c...