Java基礎學習筆記(十四)—— java中的常用容器ArrayList與LinkedList

Java基礎學習筆記(十四)—— java中的常用容器ArrayList與LinkedList

People can't do something by themselves; they wanna tell you you can not do it.

| @Author:TTODS


ArrayList與LinkedList

Java集合類型分爲:Collection和Map,Collection子接口有:Set、Queue和List等接口。每一種集合接口描述了一種數據結構。
ArrayList與LinkedList 都是List接口的具體實現類,List集合中的元素是有序的,可以重複出現。ArrayList底層使動態數組數據結構,LinkedList底層是鏈表結構。ArrayList訪問元素速度優於LinkedList,LinkedList佔用的內存空間比較大,但LinkedList在批量插入或刪除數據時優於ArrayList。

ArrayList常用方法

構造方法
ArrayList()

構造一個初始容量爲10的空列表

ArrayList myArray = new ArrayList();
ArrayList(Collection<? extends E> c)

用已有容器對象初始化另一個ArrayList對象

ArrayList<Integer> myArray = new ArrayList<>();
myArray.add(1);
myArray.add(2);
myArray.add(3);
ArrayList<Integer> myArray1 = new ArrayList<>(myArray);
System.out.println(myArray1); // [1,2,3]
ArrayList(int initialCapacity)

構造一個初始容量爲initialCapacity的空列表

操作元素
add(E e)

將一個元素增加到列表尾部

ArrayList<Integer> myArray = new ArrayList<>();
myArray.add(1);
System.out.println(myArray); //[1]
myArray.add(2);
System.out.println(myArray); //[1,2]
myArray.add(3);
System.out.println(myArray); //[1,2,3]
add(int index, E element)

在index處增加一個元素element,其他元素後移一位

addAll(Collection<? extends E> c)

將一個容器裏的元素增加到列表尾部

ArrayList<Integer> myArray = new ArrayList<>();
myArray.add(1);
myArray.add(2);
myArray.add(3);
ArrayList<Integer> myArray1 = new ArrayList<>();
myArray1.add(4);
myArray1.add(5);
myArray1.add(6);
System.out.println(myArray); //[1,2,3]
System.out.println(myArray1);//[4,5,6]
myArray.addAll(myArray1);
System.out.println(myArray);//[1,2,3,4,5,6]
addAll(int index, Collection<? extends E> c)

將一個容器裏的元素增加到列表指定索引處

ArrayList<Integer> myArray = new ArrayList<>();
myArray.add(1);
myArray.add(2);
myArray.add(3);
ArrayList<Integer> myArray1 = new ArrayList<>();
myArray1.add(4);
myArray1.add(5);
myArray1.add(6);
System.out.println(myArray);//[1,2,3]
System.out.println(myArray1);//[4,5,6]
myArray.addAll(0,myArray1);
System.out.println(myArray);//[4,5,6,1,2,3]
clear()

清空列表

ArrayList myArray = new ArrayList();
myArray.add(1);
myArray.add(2);
myArray.add(3);
myArray.clear();
System.out.println(myArray); // []
clone()

返回此ArrayList的淺拷貝

ArrayList<Integer> myArray = new ArrayList<>();
myArray.add(1);
myArray.add(2);
myArray.add(3);
ArrayList<Integer> myArray1 = new ArrayList<>();
myArray1 = (ArrayList<Integer>) myArray.clone();
System.out.println(myArray);//[1,2,3]
System.out.println(myArray1);//[1,2,3]
myArray.add(4);
System.out.println(myArray);//[1,2,3,4]
System.out.println(myArray1);//[1,2,3]
remove(int index)

移除指定索引處的元素

remove(Object o)

移除指定列表中第一個元素o(如果存在)

ArrayList<Integer> myArray = new ArrayList<>();
myArray.add(1); //注意此處進行了自動封箱,int類型的數值 1 自動被轉換成了一個Integer對象
myArray.add(2);
myArray.add(1);
System.out.println(myArray);//[1,2,1]
myArray.remove((Integer)1);// 若寫成 myArray.remove(1); 會調用上一個方法remove索引爲1的元素
System.out.println(myArray);//[2,1]
removeAll(Collection<?> c)
ArrayList<Integer> myArray = new ArrayList<>();
myArray.add(1);
myArray.add(2);
myArray.add(2);
myArray.add(3);
myArray.add(3);
ArrayList<Integer> myArray1 = new ArrayList<>();
myArray1.add(2);
myArray1.add(3);
System.out.println(myArray);//[1,2,2,3,3]
System.out.println(myArray1);//[2,3]
myArray.removeAll(myArray1);
System.out.println(myArray);//[1]
removeRange(int fromIndex, int toIndex)

移除此列表所以區間[fromIndex,toIndex)內的元素,若fromIndex==toIndex,不做改變

retainAll(Collection<?> c)

僅保留此列表中包含在指定集合中的元素,即刪除指定集合中不存在的元素

ArrayList<Integer> myArray = new ArrayList<>();
myArray.add(1);
myArray.add(2);
myArray.add(2);
myArray.add(3);
myArray.add(3);
ArrayList<Integer> myArray1 = new ArrayList<>();
myArray1.add(3);
System.out.println(myArray);//[1,2,2,3,3]
System.out.println(myArray1);//[3]
myArray.retainAll(myArray1);
System.out.println(myArray);//[3,3]
set(int index, E element)

將指定索引處的元素設爲element

ArrayList<Integer> myArray = new ArrayList<>();
myArray.add(1);
myArray.add(2);
myArray.add(2);
myArray.add(3);
myArray.add(3);
System.out.println(myArray);//[1,2,2,3,3]
myArray.set(2, (Integer)100);
System.out.println(myArray);//[1,2,100,3,3]
sort(Comparator<? super E> c)

按提供的Comparator(比較器)排序

ArrayList<Integer> myArray = new ArrayList<>();
myArray.add(5);
myArray.add(4);
myArray.add(3);
myArray.add(2);
myArray.add(1);
System.out.println(myArray);//[5,4,3,2,1]
myArray.sort(null);
System.out.println(myArray);//[1,2,3,4,5]
subList(int fromIndex, int toIndex)

取區間[fromIndex,toIndex)的子列表

toArray()

返回一個包含此列表中所有元素的Object數組(按列表中的順序)

ArrayList<Integer> myArray = new ArrayList<>();
myArray.add(5);
myArray.add(4);
myArray.add(3);
myArray.add(2);
myArray.add(1);
Object[] A = myArray.toArray();
System.out.println(myArray);//[5,4,3,2,1]
for(Object i :A)
	System.out.println(i);
/*
5
4
3
2
1
*/
trimToSize()

去除數組多餘的容量,使數組的容量與size()相等。

判斷元素
contains(Object o)

判斷列表是否包含元素o

isEmpty()

判斷列表是否爲空

查詢元素
get(int index)

獲取索引爲index的元素

indexOf(Object o)

獲取列表中第一次出現(索引最小)的元素o的索引

lastIndexOf(Object o)

獲取列表中最後次出現(索引最大)的元素o的索引

其他方法
size()

獲取列表的大小(存有元素的個數)

LinkedList常用方法

構造方法
LinkedList()

構造一個空列表。

LinkedList myLinkedList = new LinkedList();
LinkedList(Collection<? extends E> c)

構造一個包含指定集合的元素的列表,按照它們由集合的迭代器返回的順序。

LinkedList<String> myLinkedList = new LinkedList<>(Arrays.asList("Hello","World","Hello","java"));
System.out.println(myLinkedList);//[Hello, World, Hello, java]
操作元素
add(E e)

將指定的元素追加到此列表的末尾(可選操作)。返回一個boolean值,表示是否插入成功。

LinkedList<String> myLinkedList = new LinkedList<>(Arrays.asList("Hello","World","Hello","java"));
if(myLinkedList.add("add String")) {
	System.out.println("成功在LinkedList末尾添加元素");
	System.out.println(myLinkedList);
}
//成功在LinkedList末尾添加元素
//[Hello, World, Hello, java, add String]
add(int index, E element)

在index處增加一個元素element,其他元素後移一位。無返回值。

addAll(Collection<? extends E> c)

將指定集合中的所有元素插入到此列表中的末尾。返回boolean值。

addAll(int index, Collection<? extends E> c)

將指定集合中的所有元素插入到此列表中,從指定的位置開始。 返回boolean值。

LinkedList<String> myLinkedList = new LinkedList<>(Arrays.asList("Hello","World","Hello","java"));
System.out.println(myLinkedList); //[Hello, World, Hello, java]
myLinkedList.addAll(2,Arrays.asList("This","is","a","new","List"));
System.out.println(myLinkedList);//[Hello, World, This, is, a, new, List, Hello, java]
addLast(E e)

在該列表末尾插入元素,無返回值。

addFirst(E e)

在該列表開頭插入元素,無返回值。

clear()

清空列表

clone()

返回此ArrayList的淺拷貝,示例見ArrayList的相同方法。

poll()

檢索並刪除此列表的頭(第一個元素)。返回被刪除的元素。若列表本爲空返回null

LinkedList<String> myLinkedList = new LinkedList<>(Arrays.asList("Hello","World","Hello","java"));
System.out.println(myLinkedList.poll());//Hello
System.out.println(myLinkedList);//[World, Hello, java]
pollFirst()

檢索並刪除此列表的第一個元素,如果此列表爲空,則返回 null 。

LinkedList<String> myLinkedList = new LinkedList<>(Arrays.asList("Hello","World","Hello","java"));
System.out.println(myLinkedList.pollFirst());//Hello
System.out.println(myLinkedList);//[World, Hello, java]
pollLast()

檢索並刪除此列表的最後一個元素,如果此列表爲空,則返回 null 。

LinkedList<String> myLinkedList = new LinkedList<>(Arrays.asList("Hello","World","Hello","java"));
System.out.println(myLinkedList.pollLast()); //java
System.out.println(myLinkedList); // [Hello, World, Hello]

pop()

從此列表表示的堆棧中彈出一個元素。(刪除並返回列表的第一個元素)

LinkedList<String> myLinkedList = new LinkedList<>(Arrays.asList("Hello","World","Hello","java"));
System.out.println(myLinkedList.pop());//Hello
System.out.println(myLinkedList);// [World, Hello, java]
push(E e)

將元素推送到由此列表表示的堆棧上。

LinkedList<String> myLinkedList = new LinkedList<>(Arrays.asList("Hello","World","Hello","java"));
System.out.println(myLinkedList); //[Hello, World, Hello, java] 	
myLinkedList.push("String");
System.out.println(myLinkedList);// [String, Hello, World, Hello, java]	
remove()

檢索並刪除此列表的頭(第一個元素)。

LinkedList<String> myLinkedList = new LinkedList<>(Arrays.asList("Hello","World","Hello","java"));	
System.out.println(myLinkedList.remove());//Hello
System.out.println(myLinkedList);//[World, Hello, java]
remove(int index)

刪除該列表中指定位置的元素。返回被刪除的元素。

remove(Object o)

從列表中刪除指定元素的第一個出現(如果存在)。返回boolean值

LinkedList<String> myLinkedList = new LinkedList<>(Arrays.asList("Hello","World","Hello","java"));	
System.out.println(myLinkedList.remove("Hello"));//true
System.out.println(myLinkedList);//[World, Hello, java]
removeFirst()

從此列表中刪除並返回第一個元素。

LinkedList<String> myLinkedList = new LinkedList<>(Arrays.asList("Hello","World","Hello","java"));	
System.out.println(myLinkedList.removeFirst());//Hello
System.out.println(myLinkedList);//[World, Hello, java]
removeLast()

從此列表中刪除並返回最後一個元素。

removeFirstOccurrence(Object o)

刪除此列表中指定元素的第一個出現(從頭到尾遍歷列表時)。返回boolean值,如果存在該元素則返回true

LinkedList<String> myLinkedList = new LinkedList<>(Arrays.asList("Hello","World","Hello","java"));	
System.out.println(myLinkedList.removeFirstOccurrence("java"));//true
System.out.println(myLinkedList);//[Hello, World, Hello]
removeLastOccurrence(Object o)

刪除此列表中指定元素的最後一次出現(從頭到尾遍歷列表時)。

set(int index, E element)

用指定的元素替換此列表中指定位置的元素。

LinkedList<String> myLinkedList = new LinkedList<>(Arrays.asList("Hello","World","Hello","java"));	
System.out.println(myLinkedList);//[Hello, World, Hello, java]
myLinkedList.set(3,"CSDN");
System.out.println(myLinkedList);//[Hello, World, Hello, CSDN]
toArray()

以正確的順序(從第一個到最後一個元素)返回一個包含此列表中所有元素的數組。

offer(E e)

將指定的元素添加爲此列表的尾部(最後一個元素)。返回boolean值。

offerFirst(E e)

在此列表的前面插入指定的元素。返回boolean值。

offerLast(E e)

在該列表的末尾插入指定的元素。返回boolean值。

LinkedList<String> myLinkedList = new LinkedList<>(Arrays.asList("Hello","World","Hello","java"));
myLinkedList.offer("one");
System.out.println(myLinkedList);//[Hello, World, Hello, java, one]
myLinkedList.offerFirst("two");
System.out.println(myLinkedList);//[two, Hello, World, Hello, java, one]
myLinkedList.offerLast("three");
System.out.println(myLinkedList);//[two, Hello, World, Hello, java, one, three]
判斷元素
contains(Object o)

如果此列表包含指定的元素,則返回 true 。

查詢元素
element()

檢索但不刪除此列表的頭(第一個元素)。

LinkedList<String> myLinkedList = new LinkedList<>(Arrays.asList("Hello","World","Hello","java"));	
System.out.println(myLinkedList.element());//Hello
System.out.println(myLinkedList);//[Hello, World, Hello, java]
get(int index)

返回此列表中指定位置的元素。

getFirst()

返回此列表中的第一個元素。

getLast()

返回此列表中的最後一個元素。

indexOf(Object o)

返回此列表中指定元素的第一次出現的索引,如果此列表不包含元素,則返回-1。

lastIndexOf(Object o)

返回此列表中指定元素的最後一次出現的索引,如果此列表不包含元素,則返回-1。

peek()

檢索但不刪除此列表的頭(第一個元素)。

LinkedList<String> myLinkedList = new LinkedList<>(Arrays.asList("Hello","World","Hello","java"));	
System.out.println(myLinkedList.peek());//Hello
System.out.println(myLinkedList);//[Hello, World, Hello, java]
peekFirst()

檢索但不刪除此列表的第一個元素,如果此列表爲空,則返回 null 。

peekLast()

檢索但不刪除此列表的最後一個元素,如果此列表爲空,則返回 null 。

LinkedList<String> myLinkedList = new LinkedList<>(Arrays.asList("Hello","World","Hello","java"));	
System.out.println(myLinkedList.peekLast());//java
System.out.println(myLinkedList);//[Hello, World, Hello, java]
其他方法
size()

返回此列表中的元素數。


- THE END -
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章