關於Java中Collection介面方法以及ArrayList方法使用程式碼舉例
阿新 • • 發佈:2021-01-08
技術標籤:Java
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
public class ArrayListDemo {
public static void main(String[] args) {
/* ArrayLiat: 使用的是陣列結構,對於增加刪除慢,查詢快,可以儲存重複資料
傳入泛型,準備在集合中儲存什麼樣的型別,必須傳入引用型別,對於基本型別需要使用他們的包裝類
有三種構造方法,看API;如果初次需要儲存大量資料,那麼使用一參構造方法,無參構造方法自動擴容會浪費大量空間(三種構造方法看結尾)*/
// 例項化ArrayList物件,並指定泛型型別
ArrayList<Integer> data = new ArrayList<>();
/**
* 以下方法從Collection介面繼承而來
*/
// 1.public boolean add(E e) 向集合中插入一個元素,add單參方法返回布林值型別,只能是true,看結尾圖二
for (int i = 0; i <= 9; i++) {
data.add(i);
}
// 2.public boolean addAll(Collection ? extends E> c) 向集合中插入一組元素
ArrayList<Integer> data1 = new ArrayList<Integer>();
for (int j = 0; j < 5; j++) {
data1.add(j);
}
// 5.public boolean containsAll(Collection ?> c) 查詢一組元素是否存在
System. out.println(data.containsAll(data1));
System.out.println(data.addAll(data1));
// 4.public boolean contains(Object o) 查詢一個元素是否存在
System.out.println(data.contains(100));
// 6.public boolean isEmpty() 判斷集合是否為空
System.out.println(data.isEmpty());
// 7.public Iterator<E> iterator() 為 Iterator 介面例項化,用於建立Iterator物件
Iterator<Integer> iterator = data.iterator();
while (iterator.hasNext()) {
Integer i = iterator.next();
System.out.println(i);
}
// 8.public boolean remove(Object o) 從集合中刪除一個物件,Collection中可以用下標刪除也可以使用指定元素
List<String> list = new ArrayList<String>();
list.add("300");
// 可以根據特定物件進行刪除
list.remove("300");
System.out.println(list.size());
data.remove(0);
// 9.boolean removeAll(Collection ?> c) 從集合中刪除一組物件
System.out.println(data.removeAll(data1));
// 10.boolean retainAll(Collection ?> c) 判斷是否沒有指定的集合
System.out.println(data.retainAll(data1));
// 11.public int size() 求出集合中元素的個數
System.out.println(data.size());
// 12.public Object[] toArray() 把集合中的元素儲存到陣列中,以物件陣列的形式返回集合中的全部內容
// 13.<T> T[] toArray(T[] a) 指定操作的泛型型別,並把內容返回
/**
* 1.普通集合轉陣列方式
* Object[] string = data.toArray();
* 2.已知泛型型別,使用更好的方法:<T> T[] toArray(T[] a)
* 當然因為list集合中有自定義的get方法,這種取資料的方法更適合在set集合中使用
*/
// 兩個方法輸出一樣
Integer[] integers = data1.toArray(new Integer[0]);
for (int i = 0; i < integers.length; i++) {
System.out.print(integers[i] + ",");
}
System.out.println(integers);
Integer[] string = data1.toArray(new Integer[]{});
for (int i = 0; i < string.length; i++) {
System.out.print(string[i] + ",");
}
System.out.println(string);
// [Ljava.lang.Object;@7c30a502
System.out.println(data.toArray());
// 14.public boolean equals(Object o) 從 Object 類中覆寫而來,o:要與此集合進行相等性比較的物件
System.out.println(data1.equals(data));
// 15.public int hashCode() 從 Object 類中覆寫而來,返回此集合的雜湊值
System.out.println(data1.hashCode());
// 3.public void clear() 清空集合中的元素
data.clear();
/**
* 以下方法是ArrayList介面單獨定義的
*/
// 1.public void add(int index,E element) 在指定位置處增加元素
data.add(0, 300);
data.add(100);
data.add(100);
// 2.boolean addAll(int index,Collection ? extends E> c) 在指定位置處增加一組元素
data.addAll(2,data1);
for(Integer i : data){
System.out.print(i+",");
}
// 3.public E get(int index) 根據索引位置取出每一個元素;對於get方法,如果獲取的下標中沒有元素,那麼會丟擲異常
System.out.println(data.get(1));
System.out.println(data.get(2));
// 4.public int indexOf(Object o) 根據物件查詢指定的位置,從前往後第一個(如果有重複元素),找不到返回-1
System.out.println(data.indexOf(100));
// 5.public int lastIndexOf(Object o) 從後面向前查詢位置,找不到返回-1
System.out.println(data.lastIndexOf(100));
// 6.public ListIterator<E> listIterator() 返回 ListIterator 介面的例項,建立ListIterator物件
ListIterator<Integer> iterator1 = data.listIterator();
System.out.println("----------華麗分割線----------");
// 7.public ListIterator<E> listIterator(int index) 返回從指定位置的 ListIterator 介面的例項
for (Integer s : data){
System.out.print(s+",");
}
System.out.println();
ListIterator<Integer> iterator2 = data.listIterator(2);
while(iterator2.hasNext()){
System.out.print(iterator2.next()+",");
}
System.out.println();
// 8.public E remove(int index) 刪除指定位置的內容,並返回刪除的元素
System.out.println("被移除的元素是:" + data.remove(2));
// 9.E set(int index,E element) 修改指定位置的內容,並返回被替換的元素值
System.out.println("替換的元素為:" + data.set(1, 200));
// 10.List<E> subList(int fromIndex,int toIndex) 返回子集合,左閉右開
for (int i = 0; i <= 9; i++) {
data.add(i);
}
// [0, 1, 2],
System.out.println(data.subList(2, 5));
// 300、200、0、1、2、3、4、5、6、7、8、9
System.out.print("集合中的內容是:");
for (int x = 0; x < data.size(); x++) {
if (x == data.size() - 1) {
System.out.print(data.get(x));
} else {
System.out.print(data.get(x) + "、");
}
}
}
}