- 浏览: 21738 次
最新评论
情景:
今天在做项目的时候需要对两个字符串类型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 461List接口继承了Collection接口的contain ... -
java中Map接口
2016-03-12 17:50 377Map提供了一种映射关系,其中的元素是以键值对的形式存储的, ... -
List、Set常用方法集合
2016-03-12 16:44 597import java.util.ArrayList; ... -
包装类
2016-03-09 21:55 378java中使用包装类使基本数据类型拥有对象的性质,通过包装类 ... -
String
2016-03-08 22:44 303java 中处处都是字符串,今天总结下字符串的相关内容。 ... -
final的总结
2016-03-06 15:01 389final代表着最终的,它可修饰类、方法、变量。 修饰 ... -
java中父类、子类及代码块、成员变量之间的执行顺序
2016-03-04 22:47 359在代码中有类之间有继承关系,父类子类中均有成员变量、普通代 ... -
java中的内部类
2016-03-04 22:12 403定义:定义在类里 ... -
static --- 静态变量
2016-03-02 22:50 351static的作用:由于类是对象的模型,基于一个类可以生成 ... -
java中抽象、接口
2016-01-27 18:40 4041、抽象 抽象使用abstr ... -
java中的封装、继承、多态
2016-01-17 15:28 789封装 java中的第一特性就是封装,以世界中的实体体现到 ... -
面向对象的理解
2016-01-17 14:46 315重新回顾java基础,在此浅谈下对java的面向对象的理解。 ... -
java中数组
2016-01-09 16:48 721数组是java中的一种数据类型,并且为引用数据类型。lon ... -
对反射的理解
2015-12-02 14:24 0反射(Reflect)作为java语言中的基础,同时又作为 ... -
设置Eclipse中的tab键为4个空格的完整方法
2016-03-04 20:21 634http://my.oschina.net/xunxun1 ...
相关推荐
主要介绍了C#遍历List并删除某个元素的方法,实例分析了正序与倒序遍历list及删除元素的使用技巧,需要的朋友可以参考下
下面小编就为大家带来一篇java中循环删除list中元素的方法总结。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
我们以下面这个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,因为list的链式的删除一个元素,前面的指针指向下一个元素,vector和queue就不好办了,它们或者是线性的或者是半线性半链式,迭代器会失效 #include #include<list> using namespace std; ...
方法一:循环元素删除 // 删除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 -- ) {...
前言 初学Python,遇到过这样的问题,在遍历list的时候,删除符合条件的数据,可是总是报异常,代码如下: ...原因是在删除list中的元素后,list的实际长度变小了,但是循环次数没有减少,依然按照
(userList是集合在dataMap中的key, user是集合中的每个元素, 类似<c:forEach items='userList' var='user'>), 如图: PLUS:若表格之外还有嵌套的循环,也需要用<#list table as map></#list>,注意这里的<#list>...
下面小编就为大家带来一篇java中循环遍历删除List和Set集合中元素的方法(推荐)。小编觉得挺不错的,在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
在foreach中删除元素时,每一次删除都会导致集合的大小和元素索引值发生变化,从而导致在foreach中删除元素时会抛出异常。 集合已修改;可能无法执行枚举操作。 方法一:采用for循环,并且从尾到头遍历 如果...
我们直接先给出输出与预期不同的代码 In[28]: a = [1,2,3,4,5,6...同理,使用list.pop()函数删除指定元素的时候,也会出现上述情况,如: In[33]: a = [1,2,3,4,5,6] In[34]: for index, value in enumerate(a): ...
本文实例讲述了Python实现列表删除重复元素的三种常用方法。分享给大家供大家参考,具体如下: 给定一个列表,要求删除列表中重复元素。 listA = ['python','语','言','是','一','门','动','态','语','言'] 方法1...
用C++和Java实现带头节点的双向循环链表,要继承linearList类,并实现它的所有功能,另外,必须实现双向迭代器。 实现带头节点的双向循环链表,要具有以下的功能: 判断表是否为空,如果为空则返回true,不空返回...
在本篇文章中小编给大家分享了关于HashMap和List遍历方法及如何遍历删除元素知识点总结,需要的朋友们参考下。
一个在迭代时处理添加和删除元素的列表。 此类将在内部跟踪使用foreach关键字,ForEach()方法或GetEnumerator()方法的循环。 与不同,在这些循环中添加和删除元素不会引发异常。 在当前循环位置之后添加元素时...
循环链表的API及实现,包含:循环链表的数据结构、创建循环链表、销毁一个循环链表、清空一个循环链表、返回循环链表的长度、插入一个元素、返回一个元素、按位置删除一个元素、按结点值删除一个元素、重置游标指向...
在遍历list的时候,删除符合...原因是在删除list中的元素后,list的实际长度变小了,但是循环次数没有减少,依然按照原来list的长度进行遍历,所以会造成索引溢出。 解决方案:倒序循环删除 num_list = [1, 2, 3, 4,
统计剩余的,然后用在循环中扶正位置即可。 #include #define MAXSIZE 20 typedef int ElementType; typedef int Position; typedef struct LNode List; struct LNode { ElementType Data[MAXSIZE]; Position Last;...
建立含有n个元素的循环链表 createlist ;解决约瑟夫问题的算法函数Josephu 。在建立循环链表时依次输入各个人的编号和密码。解决约瑟夫问题时要先把不存储任何信息的头结点删掉,保证结果的正确性。然后在主函数中...