(63)ListIterator用法、List均有的增删改查
2017-07-15 19:51
295 查看
Collection
——List;元素有序,元素可以重复。因为该集合体系有索引
——Set:元素是无序的,元素不可以重复
List:
特有方法:凡是可以操作角标的方法都是该体系特有的方法。
带角标
增:add(index,element);
addAll(index,Collection)
删:remove(index)
改:set(index,element)
查:get(index)
subList(from,to);
listIterator();
List集合特有的迭代器。ListIterator是Interator的子接口。
在迭代时,不可以用集合对象的操作集合中的元素。
因为会发生java.util.ConcurrentModificationException异常。
所以,在迭代器中,只能用迭代器的方法操作元素,可以Iterator方法是有限 的,只能对元素进行判断、取出、删除的操作。
如果想要其他的操作,修改等,就需要使用其子接口:ListIterator
该接口只能通过ListIterator方法获取。
通过Iterator迭代器操作集合
通过ListIterator迭代器操作集合
hasNext
hasPrevious
——List;元素有序,元素可以重复。因为该集合体系有索引
——Set:元素是无序的,元素不可以重复
List:
特有方法:凡是可以操作角标的方法都是该体系特有的方法。
带角标
增:add(index,element);
addAll(index,Collection)
删:remove(index)
改:set(index,element)
查:get(index)
subList(from,to);
listIterator();
ArrayList al=new ArrayList(); //添加元素 al.add("java01"); al.add("java02"); al.add("java03"); //按照位置插入元素 al.add(1, "java04");//1423 //增加一个集合 ArrayList al2=new ArrayList(); //添加元素 al2.add("java04"); al2.add("java05"); al.addAll(2, al2);//144523 //按照索引删除一个元素 al.remove(3);////14423 //在特定位置修改元素 al.set(1, "java05");//15423 //通过角标获取元素 sop("get(3)="+al.get(3));//java02 //通过元素,判断位置 al.indexOf("java04");//下标是2 //获取所有元素 for(int x=0;x<al.size();x++) { sop("al("+x+")="+al.get(x)); } //获取子集合(不包含尾) List a2= al.subList(2, 4); sop("sub="+a2);//42
List集合特有的迭代器。ListIterator是Interator的子接口。
在迭代时,不可以用集合对象的操作集合中的元素。
因为会发生java.util.ConcurrentModificationException异常。
所以,在迭代器中,只能用迭代器的方法操作元素,可以Iterator方法是有限 的,只能对元素进行判断、取出、删除的操作。
如果想要其他的操作,修改等,就需要使用其子接口:ListIterator
该接口只能通过ListIterator方法获取。
通过Iterator迭代器操作集合
ArrayList al=new ArrayList(); //添加元素 al.add("java01"); al.add("java02"); al.add("java03"); //在迭代过程中,准备添加或者删除元素 Iterator it=al.iterator(); while(it.hasNext()){ Object obj=it.next(); if(obj.equals("java02")) //al.add("java008"); it.remove(); sop("obj="+obj);//obj仍可以输出Java02的原因:虽然没有集合里没有这个引用,但是在没移除之前,obj指向了Java02 //通过It be77 erator迭代器,已经确定的元素的个数,不能通过集合的方式增删,若增删,则发生异常java.util.ConcurrentModificationException //当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。 //在迭代器中有remove()方法,可用迭代器的方法进行操作,将集合中对Java02对象的引用去除,即不在集合中了。 //在Iterator迭代器中只能判断(hasNext)、获取(next)、移除(remove) } sop(al); }
通过ListIterator迭代器操作集合
hasNext
ArrayList al=new ArrayList(); //添加元素 al.add("java01"); al.add("java02"); al.add("java03"); ListIterator li=al.listIterator(); while(li.hasNext()) { Object obj=li.next(); if(obj.equals("java02")) ①li.add("java04");//该元素直接插入到 next 返回的下一个元素的前面(如果有),或者 previous 返回的下一个元素之后(如果有); //插入到下一个的前面,即当前元素的后面 sop(obj); } sop(al);//[java01, java0000, java03] } ② li.set("java00");在当前元素处修改 al=[java01, java0000, java03]
hasPrevious
sop("hasNext():"+li.hasNext());//true sop("hasPrevious():"+li.hasPrevious());//false while(li.hasNext()) { Object obj=li.next(); if(obj.equals("java02")) //li.add("java04");//该元素直接插入到 next 返回的下一个元素的前面(如果有),或者 previous 返回的下一个元素之后(如果有); li.set("java0000"); //插入到下一个的前面,即当前元素的后面 sop(obj); } sop("hasNext():"+li.hasNext());//false sop("hasPrevious():"+li.hasPrevious());//true sop("---------------------"); while(li.hasPrevious()) { Object obj=li.previous(); if(obj.equals("java0000")) ①li.add("java04");//previous 返回的下一个元素之后(如果有);[java01, java04, java0000, java03] li.set("java0q"); //[java01, java0q, java03] sop(obj); } ②li.set("java0q"); //[java01, java0q, java03]
相关文章推荐
- java集合中list集合基本用法及List集合特有的迭代器ListIterator
- List和ListIterator的常见用法及特性
- List集合ListIterator和Iterator迭代器区别与用法
- C#基础教程之IComparable用法,实现List<T>.sort()排序
- Delphi TStringList的用法
- C#控制台基础 list.where 找出大于3的数字 的用法示例
- [黑马程序员一]:动态向数组中添加数据之Array,ArrayList,List,Dictionary用法
- python 序列类型以及list(列表) 和 tuple(元组)详解 以及range的用法
- checkboxlist详细用法、checkboxlist用法、checkboxlist
- Java中List,ArrayList、Vector,map,HashTable,HashMap区别用法
- 一步一步学List Control控件的用法(第三步)----设置风格
- ArrayList Vector LinkedList 区别与用法
- List<T>用法总结【转】
- (转)Java中toArray的用法探究(java数组与list转换)
- Map里面存放Map或List的用法
- map和list的用法:HashMap遍历(一)
- TThreadList的用法
- java中集合List用法
- Linkedlist的基本用法
- list, tuple, dict, set的用法总结