1.1 Set接口 存入Set的每个元素都必须是唯一的,Set接口不保证维护元素的次序; HashSet类: 为快速查找设计的Set,存入HashSet的对象必须定义hashCode(),它不保证集合的迭代顺序; LinkedHashSet类: 具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。 1.2 List接口 List按对象进入的顺序保存对象,不做...
二、ConcurrentModificationException异常-Iterator遍历集合过程中用其他手段(或其他线程)操作元素 ConcurrentModificationException是Java集合的一个快速报错(fail-fast)机制,防止多个线程同时修改同一个集合的元素。在用Iterator遍历集合时,如果你用其他手段(非Iterator自身手段)操作集合元素,就会报ConcurrentModificationException。
importjava.util.HashSet; importjava.util.Iterator; importjava.util.Set; publicclassDemo { publicstaticvoidmain(String[] args) { Set<Object> obj =newHashSet<Object>(); obj.add("a"); obj.add("b"); obj.add("c"); System.out.println("移除前:"+ obj.toString()); Iterator<Object> it...
set.remove(checkWork);} } 注意:使⽤上⾯的写法就会报上⾯的ConcurrenModificationException异常,原因是,集合不可以⼀边遍历⼀边删除。正确的写法如下:1. 遍历删除List List<CheckWork> list = this.getUserDao().getAll();Iterator<CheckWork> chk_it = list.iterator();while(chk_it.hasNext()...
list,set等集合遍历时,不能remove集合中的元素。需要new一个Object或者list,set,里面add需要删除的元素,等集合遍历完了进行remove(Object)或者removeAll(list/set)操作原因:貌似跟线程有关
1. 一、漏网之鱼-for循环递增下标方式遍历集合,并删除元素 如果你用for循环递增下标方式遍历集合,在遍历过程中删除元素,你可能会遗漏了某些元素。说那么说可能也说不清楚,看以下示例: import java.util.ArrayList; import java.util.List; public class ListTest_Unwork { ...