1. 程式人生 > >java集合之ArrayList鏈表基礎

java集合之ArrayList鏈表基礎

print ins 定位 move ensure cte ini for循環 獲取

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鏈表基礎