- 浏览: 22881 次
最新评论
情景:
今天在做项目的时候需要对两个字符串类型List集合A,B进行比较,两个集合中有相同的元素,需要循环两个集合,找出两个集合中相同的字符串、分别出不同的字符串,执行不同的数据库操作。实现思想:外层循环集合A,内部循环集合B,如果B中元素有与当前的集合A中元素相同的,则把B中该元素移除掉(使用迭代器),但是执行时报错:java.util.AbstractList.remove(AbstractList.java:230)
代码如下:
List<String> f = Arrays.asList(formerssdq.split(","));
List<String> n = Arrays.asList(ssdq.split(","));
for(String fl : f) {
if(n.contains(fl)) {
Iterator<String> iter = n.iterator();
while(iter.hasNext()) {
String nl = iter.next();
if(nl.equals(fl)) {
iter.remove();
}
}
}
}
尝试了几次还是报错,以前使用过迭代器删除元素,可是始终报错,在百思不得其解时,在网上查到原来问题出现在Arrays.asList("...")上面,Arrays.asList返回的ArrayList并不是java.util.ArrayList,而是在Arrays类中重新定义的一下内部类ArrayList,这个ArrayList并没有重写remove方法。
解决办法:
使用
String[] fList = formerssdq.split(",");
List<String> formerList = new ArrayList<String>();
for(String f : fList) {
formerList.add(f);
}
代替了List<String> f = Arrays.asList(formerssdq.split(","));
同理List<String> n = Arrays.asList(ssdq.split(","));也用同样的组织结构代替,这下就不报错了。
总结:
在遇到问题的时候,要理解里面的原理才是解决问题的重要方法。
同时本次还了解了retainAll的方法。
retainAll:取得两个List的交集,测试代码如下:
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("1"); //向列表中添加数据
list.add("2"); //向列表中添加数据
list.add("3"); //向列表中添加数据
List<String> list1=new ArrayList<String>();
list1.add("1"); //向列表中添加数据
list1.add("2"); //向列表中添加数据
boolean ret=list.retainAll(list1);
if(ret){
System.out.println("元素被移除成功");
for(String s : list) {
System.out.println(s);
}
System.out.println("-----------");
for(String s : list1) {
System.out.println(s);
}
}else{
System.out.println("列表中没有不相同的元素");
}
}
参考网址:http://www.cnblogs.com/BensonHe/p/3604278.html
今天在做项目的时候需要对两个字符串类型List集合A,B进行比较,两个集合中有相同的元素,需要循环两个集合,找出两个集合中相同的字符串、分别出不同的字符串,执行不同的数据库操作。实现思想:外层循环集合A,内部循环集合B,如果B中元素有与当前的集合A中元素相同的,则把B中该元素移除掉(使用迭代器),但是执行时报错:java.util.AbstractList.remove(AbstractList.java:230)
代码如下:
List<String> f = Arrays.asList(formerssdq.split(","));
List<String> n = Arrays.asList(ssdq.split(","));
for(String fl : f) {
if(n.contains(fl)) {
Iterator<String> iter = n.iterator();
while(iter.hasNext()) {
String nl = iter.next();
if(nl.equals(fl)) {
iter.remove();
}
}
}
}
尝试了几次还是报错,以前使用过迭代器删除元素,可是始终报错,在百思不得其解时,在网上查到原来问题出现在Arrays.asList("...")上面,Arrays.asList返回的ArrayList并不是java.util.ArrayList,而是在Arrays类中重新定义的一下内部类ArrayList,这个ArrayList并没有重写remove方法。
解决办法:
使用
String[] fList = formerssdq.split(",");
List<String> formerList = new ArrayList<String>();
for(String f : fList) {
formerList.add(f);
}
代替了List<String> f = Arrays.asList(formerssdq.split(","));
同理List<String> n = Arrays.asList(ssdq.split(","));也用同样的组织结构代替,这下就不报错了。
总结:
在遇到问题的时候,要理解里面的原理才是解决问题的重要方法。
同时本次还了解了retainAll的方法。
retainAll:取得两个List的交集,测试代码如下:
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("1"); //向列表中添加数据
list.add("2"); //向列表中添加数据
list.add("3"); //向列表中添加数据
List<String> list1=new ArrayList<String>();
list1.add("1"); //向列表中添加数据
list1.add("2"); //向列表中添加数据
boolean ret=list.retainAll(list1);
if(ret){
System.out.println("元素被移除成功");
for(String s : list) {
System.out.println(s);
}
System.out.println("-----------");
for(String s : list1) {
System.out.println(s);
}
}else{
System.out.println("列表中没有不相同的元素");
}
}
参考网址:http://www.cnblogs.com/BensonHe/p/3604278.html
发表评论
-
List接口中contain方法
2016-03-15 23:26 504List接口继承了Collection接口的contain ... -
java中Map接口
2016-03-12 17:50 408Map提供了一种映射关系,其中的元素是以键值对的形式存储的, ... -
List、Set常用方法集合
2016-03-12 16:44 635import java.util.ArrayList; ... -
包装类
2016-03-09 21:55 413java中使用包装类使基本数据类型拥有对象的性质,通过包装类 ... -
String
2016-03-08 22:44 339java 中处处都是字符串,今天总结下字符串的相关内容。 ... -
final的总结
2016-03-06 15:01 428final代表着最终的,它可修饰类、方法、变量。 修饰 ... -
java中父类、子类及代码块、成员变量之间的执行顺序
2016-03-04 22:47 398在代码中有类之间有继承关系,父类子类中均有成员变量、普通代 ... -
java中的内部类
2016-03-04 22:12 441定义:定义在类里 ... -
static --- 静态变量
2016-03-02 22:50 382static的作用:由于类是对象的模型,基于一个类可以生成 ... -
java中抽象、接口
2016-01-27 18:40 4381、抽象 抽象使用abstr ... -
java中的封装、继承、多态
2016-01-17 15:28 828封装 java中的第一特性就是封装,以世界中的实体体现到 ... -
面向对象的理解
2016-01-17 14:46 352重新回顾java基础,在此浅谈下对java的面向对象的理解。 ... -
java中数组
2016-01-09 16:48 768数组是java中的一种数据类型,并且为引用数据类型。lon ... -
对反射的理解
2015-12-02 14:24 0反射(Reflect)作为java语言中的基础,同时又作为 ... -
设置Eclipse中的tab键为4个空格的完整方法
2016-03-04 20:21 672http://my.oschina.net/xunxun1 ...
相关推荐
当我们需要遍历List并根据条件删除特定元素时,需要注意正确的方法,以避免在遍历过程中出现错误。以下将详细介绍如何在C#中遍历List并删除元素,包括正序和倒序遍历的技巧。 首先,我们来看一下错误的遍历方式。...
在Java编程中,当需要在循环中删除列表(List)中的元素时,需要注意一些关键点以避免潜在的问题。这里我们将详细讨论几种不同的循环遍历和删除元素的方法,以及它们的适用场景。 1. **常规for循环**: ```java for...
在开发中,我们常常需要对数组进行操作,其中就包括删除数组中的指定元素。在JavaScript中,原生提供的`splice()`方法是一种常用的方式,它通过指定的索引位置来删除元素。然而,在某些情况下,使用`splice()`方法...
总结来说,当在循环中删除`std::list`元素时,必须小心处理迭代器,确保它们不会因元素的删除而失效。可以使用迭代器的副本或`erase()`的返回值来维护有效的迭代器状态。理解这一点对于编写稳定、高效的C++代码至关...
我们以下面这个list为例,删除其中所有值为6的元素: l=[9,6,5,6,6,7,8,9,6,0] 首先尝试remove方法: l.remove(6) print(l) 结果为:[9, 5, 6, 6, 7, 8, 9, 6, 0],只删除了第一个为6的元素。 如果采用for循环...
List接口允许我们在集合中按索引访问元素,并且支持插入、删除和修改操作。本教程将深入讲解如何在Java中对List进行循环移动元素的操作,通过源代码实例和详细指导来帮助你掌握这一技能。 首先,我们需要理解Java中...
根据给定文件的信息,本文将详细介绍如何在Java的List集合中去除重复元素的三种方法:使用for循环、使用迭代器以及利用HashSet的特性。 ### 一、使用for循环去除重复元素 这种方法的基本思想是通过双重循环来遍历...
- 直接在循环中删除`ArrayList`元素时,需要特别注意索引变化,避免出现越界异常。 - 使用`Iterator`删除元素是一种更安全、更推荐的做法,因为它自动处理了删除后的索引调整问题。 - 在实际开发中,建议优先考虑...
`List<T>`是.NET框架提供的一个泛型类,它实现了`IList<T>`、`ICollection<T>`和`IEnumerable<T>`接口,提供了动态数组的功能,允许我们方便地添加、删除和查找元素。对于查找重复元素,我们通常会遍历列表,比较每...
HashMap和List遍历方法及如何遍历删除元素总结 HashMap和List都是Java中最常用的数据...在遍历和删除HashMap和List的元素时,需要小心地处理,以免出现问题。使用正确的遍历方法和删除元素的方法可以避免异常的出现。
当尝试在循环内部删除元素时,Java的迭代机制无法处理这种行为,因此抛出`ConcurrentModificationException`。 **正确的遍历删除方式** 为了避免上述异常,有以下两种正确的方法来遍历并删除List和Set集合中的元素...
遍历嵌套列表时,可以使用for循环,但需要注意嵌套循环的情况。如果每个子列表长度不一,可能需要使用递归或者条件判断来处理。以下是一个简单的遍历示例: ```python for sublist in nested_list: for item in ...
方法一:循环元素删除 // 删除ArrayList中重复元素 public static void removeDuplicate(List list) { for ( int i = 0 ; i < list.size() - 1 ; i ++ ) { for ( int j = list.size() - 1 ; j > i; j -- ) {...
在C#编程中,`List<T>` 是一种常用的动态数组,它允许我们在运行时添加、删除和访问元素。标题“c#list添加数据”指的是如何向已经实例化的`List<T>`对象中添加数据。描述中提到“list<>.count==0”的情况,即列表为...
在C#编程中,`List<T>`是.NET框架中常用的一种动态数组,它属于泛型集合,提供了丰富的功能,使得在处理一系列数据时更加灵活高效。`List<T>`类是`System.Collections.Generic`命名空间的一部分,它实现了`IList<T>`...
其中,`list`是STL中的一种关联容器,它是一个双向链表,提供了高效地插入和删除元素的能力。本项目将探讨如何在C++中实现一个类似于STL的循环链表。 首先,我们来看`MyList.h`这个头文件,它可能定义了`MyList`类...
前言 初学Python,遇到过这样的问题,在遍历list的时候,删除符合条件的数据,可是总是报异常,代码如下: ...原因是在删除list中的元素后,list的实际长度变小了,但是循环次数没有减少,依然按照
(userList是集合在dataMap中的key, user是集合中的每个元素, 类似<c:forEach items='userList' var='user'>), 如图: PLUS:若表格之外还有嵌套的循环,也需要用<#list table as map></#list>,注意这里的<#list>...