ArrayList
package com.aff.coll; import java.util.ArrayList; import java.util.List; import org.junit.Test; /* 集合 Collection接口 |----List接口:存儲有序,可以重復的元素 |----ArrayList(主要的實現類,首選,底層數組實現) |----LinkedList(底層鏈表結構,適用於頻繁的插入,刪除操作) |----Vector(古老的,線程安全的,速度慢,不用了) |----Set接口:存儲無序的,不可重復的元素 |----HashSet |----LinkedHashSet |----TreeSet Map接口:存儲 "鍵-值"對的數據 |----HashMap |----LinkedHashMap |----TreeMap |----HashTable(子類:properties) */ public class TestList { // ArrayList:List的主要實現類 /* List中相對於Collection,新增加的方法 -- void add(int index,Object ele); 在指定索引位置index添加元素 --boolean addAll(int index,Collection ele); 指定索引添加集合 --Object get(int index); 獲取指定索引的元素 --Object remove(int index); 刪除指定索引位置的元素 --Object set(int index,Object ele); 設置指定索引位置的元素為ele --int indexOf(Object obj ); 返回obj在在集合中首次出現的位置,沒有的話返回-1 --int lastIndexOf(Object obj); 返回obj在集合中最后一次出現的位置,沒有的話,返回-1 --List subList(int fromIndex,int toIndex ); 返回從fromIndex到toIndex結束的一個子list, 不含后面的為 "[ )" 左閉右開關系 List常用的方法:增: add(Object obj) 刪: remove() 改: set(int index,Object obj) 查: get(int index) 插: add(int index,Object ele) 長度: size()
注意:添加進List集合中的元素(或對象)所在的類一定要重寫equals(方法) */ @Test public void testList2(){ List list = new ArrayList();
//換成LinkedList輸出結果一樣的,但是底層是不一樣,LinkedList底層用的是鏈表,
//LinkedList list2 = new LinkedList(); list.add(123); list.add(456); list.add(new String("AA")); list.add(new String("CC")); list.add(456); System.out.println(list.indexOf(456));//1 System.out.println(list.lastIndexOf(456));//4 System.out.println(list.indexOf(444));//-1 沒有 System.out.println(list.subList(0, 3)); //[123, 456, AA] } @Test public void testList() { List list = new ArrayList(); list.add(123); list.add(456); list.add(new String("AA")); list.add(new String("BB")); System.out.println(list);//[123, 456, AA, BB] list.add(0, 555); System.out.println(list); Object obj = list.get(1); System.out.println(obj); list.remove(0); System.out.println(list.get(0)); list.set(0, 111); System.out.println(list.get(0)); /* [123, 456, AA, BB] [555, 123, 456, AA, BB] 123 123 111 */ } }