黑马程序员:Java基础——List集合共性方法,Iterator迭代和集合具体对象的特点
2014-10-24 13:47
591 查看
-------
Java EE培训、java培训、期待与您交流! ----------
Collection
|--List:元素是有序的,元素可以重复,因为该集合体系有索引。
|--Set:元素师无序的,元素不可以重复,该集合无索引。
[align=left] 这篇文章主要说List集合。[/align]
[align=left] List特有方法:[/align]
[align=left] 增:add(index,element);[/align]
[align=left] addAll(index,Collection);[/align]
[align=left] 删:remove(index);[/align]
[align=left] 改:set(index,element);[/align]
[align=left] 查:get(index);[/align]
[align=left] subList(from,to);[/align]
[align=left] listIterator();[/align]
[align=left] 以下是示例代码:[/align]
运行结果如下:
在迭代时,不可以通过集合对象的方法操作集合中的元素。
因为会发生ConcurrentModificationException异常。
所以,在迭代时,只能用迭代器的方法操作元素,可是Iterator方法是有限的,只能对元素进行判断,取出,修改等。
就需要使用其子接口:ListIterator。该接口只能通过List集合的listIterator方法获取。
ConcurrentModificationException异常:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。
意思就是当我们要操作要提取的元素时,会导致JVN不知所云,无法进行下一步的执行,就会抛出ConcurrentModificationException异常。
以下是ListIterator的示例代码:
listIterator也可以进行反向遍历,以下是正反向遍历代码:
ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快,但是增删速度稍慢,线程不同步。
LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询速度稍慢。
Vector:底层是叔组数据结构。线程同步,被ArrayList替代了。
我会在接下来的几篇Blog中依次说到。
Java EE培训、java培训、期待与您交流! ----------
1.List集合共性方法
[align=left] 首先,我们来了解下Collection的两大分支:[/align]Collection
|--List:元素是有序的,元素可以重复,因为该集合体系有索引。
|--Set:元素师无序的,元素不可以重复,该集合无索引。
[align=left] 这篇文章主要说List集合。[/align]
[align=left] List特有方法:[/align]
[align=left] 增:add(index,element);[/align]
[align=left] addAll(index,Collection);[/align]
[align=left] 删:remove(index);[/align]
[align=left] 改:set(index,element);[/align]
[align=left] 查:get(index);[/align]
[align=left] subList(from,to);[/align]
[align=left] listIterator();[/align]
[align=left] 以下是示例代码:[/align]
public class ListDemo { public static void main(String[] args) { ArrayList alList = new ArrayList(); alList.add("java01"); alList.add("java02"); alList.add("java03"); alList.add("java04"); sop("原数组:"+alList); //移除角标号为2的元素 //alList.remove(2); //将角标号为2的元素修改 alList.set(2, "Java003"); //获取角标号为1的元素 sop("角标号为1的元素为:"+alList.get(1)); //获取角标号从1到3的元素(前闭后开区间) sop("角标号从1到3的元素为:"+alList.subList(1, 3)); sop("新数组:"+alList); /*for(Iterator it = alList.listIterator();it.hasNext();){ sop("Iterator遍历--"+it.next()); }*/ } public static void sop(Object obj){ System.out.println(obj); } }
运行结果如下:
2.ListIterator方法
List集合特有的迭代器,ListIterator是Iterator的子接口在迭代时,不可以通过集合对象的方法操作集合中的元素。
因为会发生ConcurrentModificationException异常。
所以,在迭代时,只能用迭代器的方法操作元素,可是Iterator方法是有限的,只能对元素进行判断,取出,修改等。
就需要使用其子接口:ListIterator。该接口只能通过List集合的listIterator方法获取。
ConcurrentModificationException异常:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。
意思就是当我们要操作要提取的元素时,会导致JVN不知所云,无法进行下一步的执行,就会抛出ConcurrentModificationException异常。
以下是ListIterator的示例代码:
ArrayList alList = new ArrayList(); alList.add("java01"); alList.add("java02"); alList.add("java03"); alList.add("java04"); for(ListIterator it = alList.listIterator();it.hasNext();){ Object object = it.next(); if(object.equals("java03")){ //it.add("Java005"); it.set("Java003"); } sop(object); } sop(alList);运行结果为:
listIterator也可以进行反向遍历,以下是正反向遍历代码:
ListIterator it = alList.listIterator(); for(;it.hasNext();){ Object object = it.next(); if(object.equals("java03")){ //it.add("Java005"); it.set("Java003"); } sop("Next="+object); } for(;it.hasPrevious();){ sop("Previous=="+it.previous()); } sop(alList);运行结果如下:
3.List集合具体对象的特点
在最后,我们来认识一下List的子类:ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快,但是增删速度稍慢,线程不同步。
LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询速度稍慢。
Vector:底层是叔组数据结构。线程同步,被ArrayList替代了。
我会在接下来的几篇Blog中依次说到。
相关文章推荐
- Java基础-List集合共性方法、List和Set子接口、具体对象的特点
- 面向对象-List集合(共性方法、List和Set子接口、具体对象的特点)
- Java基础 集合框架 共性方法 迭代器 ArrayList LinkedList Vector HashSet TreeSet
- Java-集合 list对象进行指定位置插入、删除、迭代、遍历输出(具体习题讲解)
- Java-集合 list对象进行指定位置插入、删除、迭代、遍历输出(具体习题讲解)
- Java基础-Map概述与子类对象特点、共性方法
- java基础:集合框架之List(共性方法)
- 黑马程序员——JAVA基础——集合---概述、Collection中共性方法、List、Map、工具类Collections和Arrays
- 黑马程序员:Java基础——集合框架之体系概述、共性方法与迭代器
- 黑马程序员---集合体系的继承关系图。顶层接口Collection中的方法,迭代器Iterator使用和原理,List派系特点
- 黑马程序员--Java基础--集合、泛型、其他对象(System、Runtime、Math、Date)
- 黑马程序员:Java基础——List集合的分支
- JAVA学习第三十四课 (常用对象API)—List集合及其子类特点
- Java:集合,对列表(List)中的自定义对象按属性(字段)排序(正序、倒序)的方法
- 黑马程序员 java 基础 毕向东 面向对象 集合框架 工具类 Collections and Arrays
- 黑马程序员-Java基础,Java集合Collection和Iterator接口
- 黑马程序员————java基础--------集合之set接口的特点及应用
- JAVA基础回顾1 遍历List Set 和Map集合的所有方法
- 黑马程序员——java基础拾遗之集合框架(一) List 和 Set
- 黑马程序员学习log第五篇基础知识:JAVA的面向对象之集合总结