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();
	}
}
相关文章
相关标签/搜索