A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© linder_qzy 中级黑马   /  2015-3-12 14:49  /  658 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 linder_qzy 于 2015-3-12 15:06 编辑

[size=14.44444465637207px]关于List的一点总结,欢迎补充List:元素是有序的,元素可以重复。因为该集合体系有索引。
   |--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快,但是增删稍慢。线程不同步。
   |--LinkedList:底层使用的是链表数据结构。特点:增删速度快,但是查询速度慢。
   |--Vector:底层是数组数据结构,与ArrayList用法完全一样,区别在于Vector是线程同步的,已被ArrayList替代了。
List特有的几种方法,凡是可以操作角标的方法都是该体系的特有方法。

add(int index,Object obj);
addAll(int index,Collection col);

remove(int index);

set(int index,Object obj);

get(int index);
subList(int fromIndex,int endIndex);
listIterator();


List集合特有的迭代器。ListIterator是Iterator的子接口。
Iterator在迭代时不可以通过集合对象的方法操作集合中的元素,会发生ConcurrentModificationException异常。
如果想要在迭代时对集合进行添加、修改操作就需要使用其子接口ListIterator。
ListIterator接口只能通过List.listIterator()方法获得。

Vector:枚举是Vector特有的取出方式。枚举和迭代器很像,其实枚举和迭代器是一样的。因为枚举的名称以及方法名称过长所以被迭代器取代了。下边介绍下List中迭代器以及Set遍历的用法
  1. class DemoCollection {  
  2.     public static void main(String[] args) {  
  3.         listIterator();  
  4.         method_vector();  
  5.     }  
  6.   
  7.     public static void listIterator() {  
  8.         ArrayList al = new ArrayList();  
  9.         al.add("listIterator_01");  
  10.         al.add("listIterator_02");  
  11.         al.add("listIterator_03");  
  12.         al.add("listIterator_04");  
  13.         sop("listIterator原集合=" + al);  
  14.         /*
  15.          * List集合特有的迭代器。ListIterator是Iterator的子接口。
  16.          * Iterator在迭代时不可以通过集合对象的方法操作集合中的元素,会发生ConcurrentModificationException异常。
  17.          * 如果想要在迭代时对集合进行添加、修改操作就需要使用其子接口ListIterator。
  18.          * ListIterator接口只能通过List.listIterator()方法获得。
  19.          */  
  20.         ListIterator li = al.listIterator();  
  21.         while (li.hasNext()) {  
  22.             Object obj = li.next();  
  23.             if (obj.equals("listIterator_02"))  
  24.                 li.add("listIterator_05");  
  25.         }  
  26.         //遍历添加后的集合  
  27.         Iterator ite = al.iterator();  
  28.         while(ite.hasNext()){  
  29.             System.out.println("listIterator修改后集合包含"+ite.next());  
  30.         }  
  31.     }  
  32.   
  33.     /*
  34.      * 枚举是Vector特有的取出方式。 枚举和迭代器很像,其实枚举和迭代器是一样的。 因为枚举的名称以及方法名称过长所以被迭代器取代了。
  35.      */  
  36.     public static void method_vector() {  
  37.         Vector v = new Vector();  
  38.         v.add("vector_01");  
  39.         v.add("vector_02");  
  40.         v.add("vector_03");  
  41.         v.add("vector_04");  
  42.         Enumeration en = v.elements();  
  43.         while (en.hasMoreElements()) {  
  44.             sop(en.nextElement());  
  45.         }  
  46.     }  
  47.     public static void sop(Object obj) {  
  48.         System.out.println(obj);  
  49.     }  
  50. }  
  51. /*运行结果
  52. * listIterator原集合=[listIterator_01, listIterator_02, listIterator_03, listIterator_04]
  53.    listIterator修改后集合包含listIterator_01
  54.    listIterator修改后集合包含listIterator_02  
  55.    listIterator修改后集合包含listIterator_05
  56.    listIterator修改后集合包含listIterator_03
  57.    listIterator修改后集合包含listIterator_04
  58.    vector_01
  59.    vector_02
  60.    vector_03
  61.    vector_04
  62. * */  
复制代码









0 个回复

您需要登录后才可以回帖 登录 | 加入黑马