Java 容器-ArrayList-方法

簡介

java.util.ArrayList類 是 java.util.List 的一個實現類,是一個基於數組實現的有序容器類(容許存儲 null)。java


方法列表

  • boolean add(E element)
    向容器中添加一個元素
  • void add(int index, E element)
    向容器中指定位置添加一個元素
  • boolean addAll(Collection<? extends E> collection)
    向當前容器中添加指定容器中的全部元素
  • void clear()
    刪除容器中的全部元素
  • Object clone()
    淺拷貝當前容器的實例
  • boolean contains(Object o)
    若當前容器中包含傳入的元素,則返回 true
  • void ensureCapacity(int minCapacity)
    增長當前容器的長度
  • void forEach(Consumer<? extends E> action)
    遍歷當前容器,根據實現 Consumer 接口指定遍歷操做
    -E get(int index)
    從容器中返回給定位置的元素
  • int indexOf(Object o)
    從容器中返回給定元素第一次出現的位置
  • boolean isEmpty()
    判斷當前容器是否爲空,爲空返回 true
  • Iterator <E> interator()
    返回當前容器的一個迭代器對象
  • int lastIndexOf(Object o)
    從容器中返回給定元素最後一次出現的位置
  • ListIterator <E> listIterator()
    返回當前容器的一個迭代器列表對象
  • ListIterator <E> listIterator(int index)
    從給定位置返回一個迭代器列表對象(正序)
  • E remove(int index)
    從容器中移除給定位置的元素
  • boolean remove(Object o)
    從容器中移除給定的元素
  • boolean removeAll(Collection<?> c)
    從容器中移除給定容器中的全部元素
  • bollean removeIf(Predicate<? supper E> filter)
    從容器中移除給定條件的元素,條件由 Predicate 接口的實現指定
  • protected void removeRange(int fromIndex, int toIndex)
    從容器中移除給定起始位置到結束位置的元素
  • void replaceAll(UnaryOperator<E> opeartor)
    用函數接口 UnaryOperator 返回的結果替換原容器中的全部元素
  • boolean retainAll(Collection <?> c)
    從collection(當前容器)中移除未包含在指定collection1中的全部元素
  • E set(int index, E element)
    用指定的元素替換容器中指定位置的元素
  • int size()
    返回當前容器中已有元素的容量
  • void sort(Comparator<? super E> c)
    使用指定的排序接口 Comparator 的實現來對當前容器進行排序
  • Spliterator<E> spliterator()
    返回當前容器的一個可分割迭代器
  • List<E> subList(int fromIndex, int toIndex)
    返回從給定的起始位置到終止位置所包含的元素的集合
  • Object[] toArray()
    將當前容器轉換爲 Object 類型數組
  • <T>T[] toArray(T[] a)
    將當前容器轉換爲指定類型的數組
  • void trimToSize()
    將當前容器的容量設置爲存有元素的真實容量

方法實例

  • boolean add(E element)
public class ArrayListDemo {
	public static void main(String [] args) {
		List<String> arrayList = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("jack");
		arrayList.add("mary");
		System.out.println(arrayList);
	}
}
/~~out:[tom, jack, mary]
  • void add(int index, E element)
public class ArrayListDemo {
	public static void main(String [] args) {
		List<String> arrayList = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("jack");
		arrayList.add("mary");
		// 在索引爲 0 的位置插入 mike
		arrayList.add(0, "mike");
		System.out.println(arrayList);
	}
}
~~out:[mike, tom, jack, mary]
  • boolean addAll(Collection<? extends E> collection)
public class ArrayListDemo {
	public static void main(String [] args) {
		List<String> arrayList = new ArrayList<>();
		List<String> arrayList2 = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("jack");
		arrayList.add("mary");
		arrayList2.add("mike");
		arrayList2.add("jeery");
		// 將arrayList2 的元素所有添加到 arrayList中 並從 arrayList 的末尾開始添加
		arrayList.addAll(arrayList2);
		System.out.println(arrayList);
	}
}
~~out:[tom, jack, mary, mike, jeery]
  • void clear()
public class ArrayListDemo {
	public static void main(String [] args) {
		List<String> arrayList = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("jack");
		arrayList.add("mary");
		// 清除 arrayList 中的全部元素
		arrayList.clear();
		System.out.println(arrayList);
	}
}
~~out:[]
  • Object clone()
public class ArrayListDemo {
	public static void main(String [] args) {
		ArrayList<String> arrayList = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("jack");
		arrayList.add("mary");
		// listCopy 是 arrayList 的一份拷貝 listCopy 指向的集合對象和 arrayList 指向的集合對象不是同一個 
		ArrayList<String> listCopy = (ArrayList<String>)arrayList.clone();
		listCopy.remove(0);
		System.out.println(arrayList);
		System.out.println(listCopy);
	}
}
~~out:[tom, jack, mary]
~~out:[jack, mary]
  • boolean contains(Object o)
public class ArrayListDemo {
	public static void main(String [] args) {
		List<String> arrayList = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("jack");
		arrayList.add("mary");
		System.out.println(arrayList);
		// arrayList 中包含 tom 因此返回 true
		System.out.println(arrayList.contains("tom"));
	}
}
~~out:[tom, jack, mary]
~~out:true
  • void ensureCapacity(int minCapacity)
public class ArrayListDemo {
	public static void main(String [] args) {
		ArrayList<String> arrayList = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("jack");
		arrayList.add("mary");
		// 設置 arrayList 容器的容量爲5
		arrayList.ensureCapacity(5);
		System.out.println(arrayList);
		System.out.println(arrayList.size());
	}
}
~~out:[tom, jack, mary]
~~out:3

注:這裏也許會奇怪,若是 ensureCapacity() 方法是設置容器的容量,那爲何 arrayList.size() 的值爲 3呢?這裏有一個誤區,容器的容量指的是容器內部 Object[] 數組的容量,而 size() 方法獲得的是存儲於容器中實際對象的個數,上面的示例中, arrayList 存儲了3個 字符串對象,所以 size() 返回的是 3數組

  • void forEach(Consumer<? extends E> action)
public class ArrayListDemo {
	public static void main(String [] args) {
		ArrayList<String> arrayList = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("jack");
		arrayList.add("mary");
		// forEach 能夠用來遍歷當前集合
		arrayList.forEach(new Consumer<String>() {
			@Override
			public void accept(String t) {
				System.out.println(t);
			}
		});
		// 上述循環集合也能夠寫成
		arrayList.forEach(e -> System.out.println(e));
	}
}
~~out:tom
~~out:jack
~~out:mary
  • E get(int index)
public class ArrayListDemo {
	public static void main(String [] args) {
		ArrayList<String> arrayList = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("jack");
		arrayList.add("mary");
		// 獲取集合中 索引爲 0 的元素
		System.out.println(arrayList.get(0));
	}
}
~~out:tom
  • int indexOf(Object o)
public class ArrayListDemo {
	public static void main(String [] args) {
		ArrayList<String> arrayList = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("jack");
		arrayList.add("tom");
		arrayList.add("mary");
		// 當前 arrayList 添加了兩個 tom , indexOf 返回 tom 第一次出現的索引值 0
		System.out.println(arrayList.indexOf("tom"));
	}
}
~~out:0
  • boolean isEmpty()
public class ArrayListDemo {
	public static void main(String [] args) {
		ArrayList<String> arrayList = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("jack");
		arrayList.add("mary");
		// isEmpty() 方法判斷當前集合是否爲空 當前 arrayList 不爲空,返回 falsse,若爲空 返回 true
		System.out.println(arrayList.isEmpty());
	}
}
~~out:false
  • Iterator <E> interator()
public class ArrayListDemo {
	public static void main(String [] args) {
		ArrayList<String> arrayList = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("jack");
		arrayList.add("mary");
		// iterator() 方法返回一個 Iterator 對象,能夠用此 Iterator 對象來便利當前集合
		Iterator<String> iterator = arrayList.iterator();
		while(iterator.hasNext()) {
			System.out.println(iterator.next());
		}
	}
}
~~out:tom
~~out:jack
~~out:mary
  • int lastIndexOf(Object o)
public class ArrayListDemo {
	public static void main(String [] args) {
		ArrayList<String> arrayList = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("jack");
		arrayList.add("tom");
		arrayList.add("mary");
		// lastIndexOf 方法返回 tom 在集合中最後一次出現的索引值 2
		System.out.println(arrayList.lastIndexOf("tom"));
	}
}
~~out:2
  • ListIterator <E> listIterator()
public class ArrayListDemo {
	public static void main(String [] args) {
		ArrayList<String> arrayList = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("jack");
		arrayList.add("mary");
		// listIterator 方法返回一個 ListIterator 對象
		ListIterator<String> listIterator = arrayList.listIterator();
		// 將遊標定位到 arrayList 集合末尾
		for(;listIterator.hasNext();) {
			listIterator.next();
		}
		// 逆序遍歷 arrayList 集合
		for(;listIterator.hasPrevious();) {
			System.out.println(listIterator.previous());
		}
	}
}
~~out:mary
~~out:jack
~~out:tom
  • ListIterator <E> listIterator(int index)
public class ArrayListDemo {
	public static void main(String [] args) {
		ArrayList<String> arrayList = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("jack");
		arrayList.add("mary");
		arrayList.add("jerry");
		// listIterator(1) 返回從索引值 1 開始(包含1)到集合的終點爲止的 ListIterator 對象 (正序)
		ListIterator<String> listIterator = arrayList.listIterator(1);
		// 當前 ListIterator 對象 只包含 arrayList集合中 索引值 1~3 的元素
		for(;listIterator.hasNext();) {
			System.out.println(listIterator.next());
		}
	}
}
~~out:jack
~~out:mary
~~out:jerry
  • E remove(int index)
public class ArrayListDemo {
	public static void main(String [] args) {
		ArrayList<String> arrayList = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("jack");
		arrayList.add("mary");
		// remove 方法移除指定索引位置 0 的元素
		arrayList.remove(0);
		System.out.println(arrayList);
	}
}
~~out:[jack, mary]
  • boolean removeAll(Collection<?> c)
public class ArrayListDemo {
	public static void main(String [] args) {
		ArrayList<String> arrayList = new ArrayList<>();
		ArrayList<String> arrayList2 = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("jack");
		arrayList.add("mary");
		arrayList.add("jerry");
		arrayList2.add("tom");
		arrayList2.add("jack");
		// 在 arrayList 中 移除 arrayList2 中的全部元素
		arrayList.removeAll(arrayList2);
		System.out.println(arrayList);
	}
}
~~out:[mary, jerry]
  • bollean removeIf(Predicate<? supper E> filter)
public class ArrayListDemo {
	public static void main(String [] args) {
		ArrayList<String> arrayList = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("jack");
		arrayList.add("mary");
		arrayList.add("jerry");
		// removeIf 方法 指定一個 Predicate 接口 根據接口的具體實現來移除 arrayList 中的元素 此處指定移除 字符串的長度大於 4 的元素,所以 jerry 被移除了
		arrayList.removeIf(new Predicate<String>(){
			@Override
			public boolean test(String t) {
				return t.length() > 4;
			}
		});
		// 這是 java8 的寫法
		arrayList.removeIf(e -> e.length() > 4);
		System.out.println(arrayList);
	}
}
~~out:[tom, jack, mary]
  • protected void removeRange(int fromIndex, int toIndex)
// 該方法用 portected 修飾符修飾 外部沒法訪問
  • void replaceAll(UnaryOperator<E> opeartor)
public class ArrayListDemo {
	public static void main(String [] args) {
		List<String> arrayList = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("jack");
		arrayList.add("mary");
		arrayList.add("jerry");
		// replaceAll 方法 提供一個 UnaryOpertor 接口,用接口實現返回的結果來替換 arrayList 中的元素,arrayList 中的元素都被替換成了 mike
		arrayList.replaceAll(new UnaryOperator<String>() {
			String other = "mike";
			public String apply(String t) {
				return other;
			}
		});
		System.out.println(arrayList);
	}
}
~~out:[mike, mike, mike, mike]
  • boolean retainAll(Collection <?> c)
public class ArrayListDemo {
	public static void main(String [] args) {
		List<String> arrayList = new ArrayList<>();
		List<String> arrayList2 = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("jack");
		arrayList.add("mary");
		arrayList2.add("tom");
		arrayList2.add("jack");
		// retainAll 方法會移除 arrayList 中 不包含 arrayList2 中元素的部分元素,arrayList2 中不包含 mary ,所以 arrayList 中的marry 被移除了
		arrayList.retainAll(arrayList2);
		System.out.println(arrayList);
	}
}
~~out:[tom, jack]
  • E set(int index, E element)
public class ArrayListDemo {
	public static void main(String [] args) {
		List<String> arrayList = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("jack");
		arrayList.add("mary");
		// set 方法將 arrayList 中索引值爲 0 的元素替換爲 mike
		arrayList.set(0,"mike");
		System.out.println(arrayList);
	}
}
~~out:[mike, jack, mary]
  • int size()
public class ArrayListDemo {
	public static void main(String [] args) {
		List<String> arrayList = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("jack");
		arrayList.add("mary");
		// size 方法返回當前 arrayList 中存在元素的容量
		System.out.println(arrayList.size());
	}
}
~~out:3
  • void sort(Comparator<? super E> c)
public static void main(String [] args) {
		Student student = new Student("tom",10);
		Student student1 = new Student("jack",20);
		Student student2 = new Student("mary",30);
		Student student3 = new Student("jerry",40);
		List<Student> arrayList = new ArrayList<>();
		arrayList.add(student);
		arrayList.add(student1);
		arrayList.add(student2);
		arrayList.add(student3);
		// sort 提供一個排序的接口 根據接口的實現來排序 arrayList 中的元素
		arrayList.sort(new Comparator<Student>() {
			@Override
			public int compare(Student o1, Student o2) {
				return o2.getAge() - o1.getAge();
			}
		});
		System.out.println(arrayList);
	}
~~out:[Student [name=jerry, age=40], Student [name=mary, age=30], Student [name=jack, age=20], Student [name=tom, age=10]]
  • Spliterator<E> spliterator()
public class ArrayListDemo {
	public static void main(String [] args) {
		List<String> arrayList = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("mary");
		arrayList.add("jerry");
		// spliterator() 方法返回一個 Spliterator 對象
		Spliterator<String> spliterator = arrayList.spliterator();
	}
}
  • List<E> subList(int fromIndex, int toIndex)
public class ArrayListDemo {
	public static void main(String [] args) {
		List<String> arrayList = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("mary");
		arrayList.add("jerry");
		arrayList.add("mike");
		// subList() 方法從 arrayList 中截取指定開始位置到結束位置的元素(包前不包後),返回一個新的集合 arrayList2
		List<String> arrayList2 = arrayList.subList(0, 2);
		System.out.println(arrayList2);
	}
}
~~out:[tom, mary]
  • Object[] toArray()
public class ArrayListDemo {
	public static void main(String [] args) {
		List<String> arrayList = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("mary");
		arrayList.add("jerry");
		arrayList.add("mike");
		// toArray() 方法將 arrayList 轉換爲 Objcet[] 數組
		Object [] object = arrayList.toArray();
		for(Object obj:object) {
			System.out.println(obj);
		}
	}
}
~~out:tom
~~out:mary
~~out:jerry
~~out:mike
  • <T>T[] toArray(T[] a)
public class ArrayListDemo {
	public static void main(String [] args) {
		List<String> arrayList = new ArrayList<>();
		arrayList.add("tom");
		arrayList.add("mary");
		arrayList.add("jerry");
		arrayList.add("mike");
		// toArray(T[] a) 方法將 arrayList 轉換爲 String 類型的數組,接收的也是一個 String 類型的數組
		String[] string = arrayList.toArray(new String[4]);
		for(String obj:string) {
			System.out.println(obj);
		}
	}
}
~~out:tom
~~out:mary
~~out:jerry
~~out:mike
  • void trimToSize()
public class ArrayListDemo {
	public static void main(String [] args) {
		// 要調用 trimToSize 方法 要顯式設置 arrayList 的容量
		ArrayList<String> arrayList = new ArrayList<>(10);
		arrayList.add("tom");
		arrayList.add("mary");
		arrayList.add("jerry");
		arrayList.add("mike");
		// trimToSize 方法將 arrayList 的容量設爲當前存儲元素的容量,當前 arrayList 申請的容量爲 10 ,但存儲只用了 4 ,trimToSize 就將當前容量設置成了 4
		arrayList.trimToSize();
	}
}
相關文章
相關標籤/搜索