java集合之ArrayList鏈表基礎
ArrayList可變數組 :
arrayList繼承AbstractList抽象類,實現list接口,底層基於數組實現。可存放null,除了非同步的之外,大致等同Vector。適用快速訪問,復制、序列化。
構造函數:
ArrayList() 默認初始容量為10
ArrayList(int initialCapacity) 指定初始容量
增加大量數據之前,先擴容量。
void ensureCapacity(int minCapacity)
size()方法是數組現在實際大小,而非數組容量大小。
ArrayList線程不同步,List list=Collections.synchronizedList(new ArrayList(…));實現同步。
常用方法:
boolean add(Element e)尾部添加元素
void add(int index,Element e)指定位置添加
boolean addAll(int index,Collection<? extends E> c)指定位置添加指定集合所有元素
boolean addAll(Collection<? extends E> c)在尾部添加指定集合所有元素
void clear()清空鏈表
void ensureCapacity(int minCapacity) 增加鏈表容量
Object clone() 淺拷貝arraylist實例
remove(int index)刪除指定位置元素
protected void removeRange(int start,int end)刪除指定範圍的元素
get(int index)取指定位置元素
Object[] toArray()鏈表轉換為數組
<T> T[] toArray(T[] a) 鏈表轉換為數組
E set(int index,E element)指定位置替換
contains(Object o)搜索是否包含指定元素
int indexOf(Object o)返回元素在鏈表中第一次出現的位置,沒有則返回-1
int lastIndexOf(Object o)最後一次出現位置,同上
boolean isEmpty()判斷鏈表是否為空
int size() 返回鏈表長度
示例:
package test;
import java.util.*;
public class arrayListTest {
public static void main(String args[]) {
ArrayList<String> list = new ArrayList<String>();
LinkedList<String> listLink = new LinkedList<String>();
listLink.add("listLink1");
listLink.add("listLink2");
listLink.add("listLink3");
listLink.add("listLink4");
listLink.add("listLink5");
list.add("list1");
list.add("list2");
list.add(2, "list3");
list.add("list4");
list.addAll(listLink);
System.out.println("1-The arraylist contains the following elements: "+ list);
int pos = list.indexOf("list2");//返回元素在列表中第一次出現的位置
System.out.println("2-The index of list2 is: " + pos);
boolean emptyFg = list.isEmpty();
System.out.println("3-the arraylist is empty or not: " + emptyFg);
int size = list.size();
System.out.println("4-The size of the list is: " + size);
boolean element = list.contains("list5");//判斷元素存在與否
System.out.println("5-the arraylist contains the object list5: "+ element);
String item = list.get(0);//獲取指定位置元素
System.out.println("6-The item is the index 0 is: " + item);
System.out.println("7-for循環鏈表");
for (int i = 0; i < list.size(); i++) {
System.out.println("8-Index: " + i + " - Item: " + list.get(i));
}
System.out.println("9-foreach循環鏈表");
for (String str : list) {
System.out.println("10-元素: " + str);
}
System.out.println("11-使用叠代器iterator循環鏈表");
for (Iterator<String> it = list.iterator(); it.hasNext();) {
System.out.println("12-元素 is: " + it.next());
}
list.set(1, "位置1set元素");
System.out.println("13-替換指定位置元素: " + list);
list.remove(0);
list.remove("list3");
System.out.println("14-刪除元素後: " + list);
String[] simpleArray = list.toArray(new String[list.size()]);
System.out.println("15-鏈表轉換為數組: "+ Arrays.toString(simpleArray));//需要toString方法轉換,否則輸出的是地址
}
}
java集合之ArrayList鏈表基礎