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 */ } }