HashSet或LinkedHashSet不使用迭代器能删除里面的对象吗?

问题描述

在不使用迭代器的情况下能删除存在集合内的对象吗?如:Setset=newHashSet();使用set.remove();删除对象,而不使用iter.remove()。importjava.util.*;publicclassTestSet{publicstaticvoidmain(String[]args){Personp1=newPerson(1,"per1","male");Personp2=newPerson(2,"per2","male");Personp3=newPerson(3,"per3","male");Personp4=newPerson(4,"per4","male");Personp5=newPerson(5,"per5","male");PersonremovePerson=newPerson(4,null,null);Setset=newHashSet();set.add(p1);set.add(p2);set.add(p3);set.add(p4);set.add(p5);Iteratoriter=set.iterator();System.out.println("利用集合的remove():方法删除:");System.out.println("利用迭代器的remove()方法删除:");Iteratoriter2=set.iterator();while(iter2.hasNext()){Personperson=(Person)iter2.next();if(person.equals(removePerson)){iter2.remove();}}System.out.println(set);System.out.println(set.size());}}classPerson{intid;publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicStringgetSex(){returnsex;}publicvoidsetSex(Stringsex){this.sex=sex;}Stringname,sex;publicPerson(intid,Stringname,Stringsex){this.id=id;this.name=name;this.sex=sex;}@OverridepublicStringtoString(){return"Person[id="+id+",name="+name+",sex="+sex+"]";}publicbooleanequals(Objectobj){if(obj==null){returnfalse;}if(objinstanceofPerson){PersontempPerson=(Person)obj;if(this.id==tempPerson.id){returntrue;}}returnfalse;}publicinthashCode(){returnthis.name.hashCode();}}

解决方案

解决方案二:
删除单个:set.remove(p1);

全删:set.clear();

解决方案三:
我这问的是怎么在不使用迭代器的情况下找到和removePerson的Id相同的对象,然后使用set.remove()方法删除?
解决方案四:
这里使用迭代器后再使用set.remove()方法会出现快速失败异常....
解决方案五:
Iteratoriter2=set.iterator();while(iter2.hasNext()){Personperson=(Person)iter2.next();if(person.equals(removePerson)){set.remove(person);}}
解决方案六:
迭代器里不能删除操作的。
解决方案七:
引用2楼rookiejp的回复:

我这问的是怎么在不使用迭代器的情况下找到和removePerson的Id相同的对象,然后使用set.remove()方法删除?

packagecom.xuz.csdn.nov24;importjava.util.HashSet;importjava.util.Set;publicclassSetRemove{publicstaticvoidmain(String[]args){Set<String>set=newHashSet<String>();set.add("5");set.add("2");set.add("4");set.add("1");set.remove("5");System.out.println(set);}}

解决方案八:
引用2楼rookiejp的回复:

我这问的是怎么在不使用迭代器的情况下找到和removePerson的Id相同的对象,然后使用set.remove()方法删除?

没仔细看,按id批量删除么?
解决方案九:
引用4楼tsjguaiguai的回复:

Iteratoriter2=set.iterator();while(iter2.hasNext()){Personperson=(Person)iter2.next();if(person.equals(removePerson)){set.remove(person);}}

这种方法不行,如果将removePerson的Id改为其他数的话会出现快速失败异常。
解决方案十:
引用7楼dr_lou的回复:

引用2楼rookiejp的回复:我这问的是怎么在不使用迭代器的情况下找到和removePerson的Id相同的对象,然后使用set.remove()方法删除?没仔细看,按id批量删除么?

在set集合中删除Id与removePeron相同的对象...
解决方案十一:
引用6楼dr_lou的回复:

引用2楼rookiejp的回复:我这问的是怎么在不使用迭代器的情况下找到和removePerson的Id相同的对象,然后使用set.remove()方法删除?Javacodepackagecom.xuz.csdn.nov24;importjava.util.HashSet;importjava.util.Set;publicclass……

string能这么删,如果set内存的是对象呢?

时间: 2024-10-29 09:10:00

HashSet或LinkedHashSet不使用迭代器能删除里面的对象吗?的相关文章

hibernate删除id还是对象的问题

问题描述 hibernate删除id还是对象的问题 hibernate4要执行删除操作的时候,是用hql语句,根据id删除的方法,还是直接删除对象呢,哪一种效率高. 解决方案 hibernate之删除对象 解决方案二: 可以输出时间看看那个快 解决方案三: 快也快不了多少吧,都差不多

jquery 动态删除ID相同的对象、动态删除相同类型对象

下面来看看这个例子:  代码如下 复制代码 <input type="hidden" name="attr_value_list[]" rel="4" all="4" value=""> <input type="hidden" name="attr_value_list[]" rel="4" all="4"

java List 遍历时删除匹配的对象

惯例 Java代码   if(!ValueWidget.isNullOrEmpty(videoPath)){                   if(!videoPath.startsWith("http://")){                       String absulotePath=videoPath.replaceAll("^\\.", absulotePrefix);                       String videoSi

oracle 删除用户下对象 脚本生成

select 'drop table ' || table_name ||';'||chr(13)||chr(10) from user_tables; --delete tables select 'drop view ' || view_name||';'||chr(13)||chr(10) from user_views; --delete views select 'drop sequence ' || sequence_name||';'||chr(13)||chr(10) from

Java集合学习(十六) HashSet详细介绍(源码解析)和使用示例

这一章,我们对HashSet进行学习. 我们先对HashSet有个整体认识,然后再学习它的源码,最后再通过实例来学会使用HashSet. 第1部分 HashSet介绍 HashSet 简介 HashSet 是一个没有重复元素的集合. 它是由HashMap实现的,不保证元素的顺序,而且HashSet允许使用 null 元素. HashSet是非同步的.如果多个线程同时访问一个哈希 set,而其中至少一个线程修改了该 set,那么它必须 保持外部同步.这通常是通过对自然封装该 set 的对象执行同步

java-基础-集合hashset

HashSet 简介 HashSet 是一个没有重复元素的集合. 它是由HashMap实现的,不保证元素的顺序,而且HashSet允许使用 null 元素. HashSet是非同步的.如果多个线程同时访问一个哈希 set,而其中至少一个线程修改了该 set,那么它必须 保持外部同步.这通常是通过对自然封装该 set 的对象执行同步操作来完成的.如果不存在这样的对象,则应该使用 Collections.synchronizedSet 方法来"包装" set.最好在创建时完成这一操作,以防

Java中Collection遍历中删除、合并元素

我的分词结果链表需要合并连续的数字和日期,所以需要熟悉一下Java Collection在遍历的过程中同时删除.合并元素的小trick.自己试验了一下,活用listIterator的previous()和next()方法就可以达到目的. 遍历中删除 数据集 List<Integer> integerList = new LinkedList<Integer>(); for (int i = 1; i <= 10; ++i) {     integerList.add(i);

Java 集合系列16之 HashSet详细介绍(源码解析)和使用示例

概要 这一章,我们对HashSet进行学习.我们先对HashSet有个整体认识,然后再学习它的源码,最后再通过实例来学会使用HashSet.内容包括:第1部分 HashSet介绍第2部分 HashSet数据结构第3部分 HashSet源码解析(基于JDK1.6.0_45)第4部分 HashSet遍历方式第5部分 HashSet示例 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3311252.html   第1部分 HashSet介绍 HashSet

java Hibernate框架Session的保存、更新、删除和查询教程

session的save方法 使一个临时对象变为持久化对象.session的save方法完成以下操作:1.把customer对象加入到缓存中,使他变为持久化对象2.选用映射文件指定的标识符生成器为持久化对象分配唯一的OID.Customer.hbm.xml文件中id元素的子元素指定标识符生成器: <generator><id name="id" column="ID" >    <generator class="increm