1. 程式人生 > >java集合框架:List基本應用:增刪改查

java集合框架:List基本應用:增刪改查

package collection;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class ListDemo {

 /**
  * @Collection
  * 可變長
  *  |--List:元素是有序的,元素可以重複的,因為該集合體繫有索引
  *   |--ArrayList:底層的資料結構使用的是陣列結構。
  *           特點:查詢速度很快,但是增刪稍慢。JDK1.2出現,執行緒不同步。
  *   |--LinkedList:底層使用的是連結串列資料結構。特點:增刪的速度很快,查詢稍慢。
  *   |--Vector:底層是陣列資料結構。
  *        JDK1.0出現(與ArrayList功能相同),執行緒是同步的。增刪改查速度都很慢。
  *             現在不用了。
  *   
  *  |--Set:元素是無序的,元素不可以重複。
  *   |--HashSet
  *   |--TreeSet
  * 
  * List:
  *   特有的方法
  * 增
  *   add(index,element);
  *   addAll(index,collection;)
  * 刪
  *   remove(index);
  * 改
  *   set(index,element);
  * 查
  *   get(index);
  *   subList(from,to);
  *   listIterator();
  * 
  * List集合特有的迭代器:ListIterator是Iterator的子介面
  * 
  * 在迭代時,不可以通過集合物件的方法操作集合中的元素,
  * 因為會發生ConcurrentModificationException異常
  * 
  * 所以,在迭代時,只能用迭代器的方法操作元素,但是Iterator的方法是有限的,
  * 只能對元素進行判斷,取出,刪除的操作。
  * 
  * 如果想要進行其他操作,如新增,修改等,就需要使用其子介面,ListIterator。
  * 該介面只能通過List集合的ListIterator方法獲取。
  */
 public static void main(String[] args) {
  //演示列表迭代器
  ArrayList al = new ArrayList();
  al.add("java01");
  al.add("java02");
  al.add("java03");
  
  sop(al);
  
  ListIterator li = al.listIterator();
  
//  sop("hasPrevious:"+li.hasPrevious());
  
  
  while(li.hasNext()){
   Object obj = li.next();
   if(obj.equals("java02"))
    //li.add("java009");
    li.set("java006");
   
  }
  
  while(li.hasPrevious()){
   sop("pre:"+li.previous());
  }
//  sop("hasNext:"+li.hasNext());
//  sop("hasPrevious:"+li.hasPrevious());
  sop(al);
  
  /*
  //在迭代過程中,準備新增或者刪除元素
  Iterator it = al.iterator();
  
  while(it.hasNext()){  //迭代器判斷
   
   Object obj = it.next();  //迭代器取出
   
   if(obj.equals("java02")){
    //al.add("java008");
    it.remove();   //迭代器移除
   }
   
   sop("obj="+obj);
   
  }
 
  sop(al);
  */
  

 }

 private static void method() {
  ArrayList al = new ArrayList();
  al.add("java01");
  al.add("java02");
  al.add("java03");
  
  sop("原集合是:"+ al);
  
  //新增
  al.add(1,"java09");
  
  //刪除
  //al.remove(2);
  
  //修改
  al.set(2, "java004");
  
  //查,獲取
  sop("get(1):"+al.get(1));
  
  //獲取所有元素(共兩種方法)
  for(int x=0;x<al.size();x++){
   sop("al("+x+")="+al.get(x));
  } 
  
  Iterator it = al.iterator();
  while(it.hasNext()){
   sop("next:" +it.next());
  }
  
  //通過indexOf獲取物件的位置
  sop(al.indexOf("java02"));
  
  List sub = al.subList(1, 3);
  sop("sub"+sub);
 }

 private static void sop(Object obj) {
  System.out.println(obj);
 }

}