ArrayListL类的API方法简单汇总
JDK版本:11.0.6
这里只是对每种方法的使用做了简单介绍,并非对其深入分析,只求在第一次使用某个方法不会对着API一脸懵逼
1. 内部结构
ArrayList内部结构是对象数组,增加删除慢,查找快
2. 构造方法
ArrayList<E> arrayList = new ArrayList<>();
//E:必须为引用类型,也就是是说如果要传入char,int等类型时必须使用其包装类
//默认创建容量为10的空队列,容量不够的时候会自动扩容,每次扩容后的容量为原来的1.5倍
ArrayList<E> arrayList = new ArrayList<>(int initialCapacity);
//创建指定容量的ArrayList对象
ArrayList<E> arrayList = new ArrayList<>(Collection<? extends E> c); (<? extends E>规定传入的Collection对象的子类的类型必须为E的子类)
//将传入的Collection对象变为ArrayList对象
3. ArrayList方法汇总
1. add(int index, E element)
将指定元素插入此列表中的指定位置
return : void
public static void main(String[] args[]){
ArrayList<Integer> arrayListTemp = new ArrayList<>();
arrayListTemp.add(0,100);
System.out.print("1.\t");
System.out.println(arrayListTemp.get(0));
}
2. add(E e)
将指定元素插入到列表末尾
return : boolean (注意,无论插入是否成功都返回的是true)
public static void main(String[] args){
ArrayList<Integer> arrayListTemp = new ArrayList<>();
arrayListTemp.add(200);
System.out.print("2.\t");
System.out.println(arrayListTemp.get(0));
}
3. addAll(int index, Collection<? extends E> c)
从指定位置开始,将指定集合中的所有元素插入此列表。
return : boolean
public static void main(String[] args){
ArrayList<Integer> list = new ArrayList<>();
TreeSet<Integer> set = new TreeSet<>();
set.add(2);
set.add(3);
list.add(1);
list.addAll(1,set);
System.out.print("3.\t");
System.out.print("添加元素:");
for (Integer i : list){
System.out.print(i + " ");
}
System.out.println();
}
4. addAll(Collection<? extends E> c)
将指定集合中的所有元素按指定集合的Iterator返回的顺序附加到此列表的末尾。
return : boolean
public static void main(String[] args){
ArrayList<Integer> list = new ArrayList<>();
TreeSet<Integer> set = new TreeSet<>();
set.add(2);
set.add(3);
list.add(1);
list.addAll(set);
System.out.print("4.\t");
System.out.print("添加元素:");
for (Integer i : list){
System.out.print(i + " ");
}
System.out.println();
}
5. clear()
public static void main(String[] args){
ArrayList<Integer> arrayListTemp = new ArrayList<>();
arrayListTemp.add(100);
System.out.print("5.\t");
System.out.print("清理前列表的元素数:" + arrayListTemp.size() + "\t");
arrayListTemp.clear();
System.out.println("清理后列表的元素数:" + arrayListTemp.size());
}
6. clone()
//返回此 ArrayList实例的浅表副本。
//return : Object
7. contains(Object o)
如果列表里面有元素o,返回true
return : boolean
public static void main(String[] args){
ArrayList<Integer> arrayListTemp = new ArrayList<>();
arrayListTemp.add(100);
System.out.print("7.\t");
System.out.println(arrayListTemp.contains(100));
}
8. ensureCapacity(int minCapacity)
将列表元素容量增加到minCapacity,而不是增加minCapacity
public static void main(String[] args){
ArrayList<Integer> arrayListTemp = new ArrayList<>();
System.out.print("8.\t");
//将列表元素容量从10增加到20
arrayListTemp.ensureCapacity(20);
System.out.println();
}
9. forEach(Consumer<? super E> action)
对列表中的所有元素都执行action操作
public static void main(String[] args){
ArrayList<Integer> arrayListTemp = new ArrayList<>();
for (int i=1;i<=3;i++){
arrayListTemp.add(i*100);
}
System.out.print("9.\t");
//不使用forEach()操作打印list内容:
for (Integer i:arrayListTemp){
System.out.print(i+ " ");
System.out.print("\t");
}
10. get(int index)
返回列表指定位置的内容
return : E
public static void main(String[] args){
ArrayList<Integer> arrayListTemp = new ArrayList<>();
for (int i=1;i<=3;i++){
arrayListTemp.add(i*100);
}
System.out.print("10.\t");
System.out.println(arrayListTemp.get(0));
}
11. indexOf(Object o)
返回列表中第一次出现元素o的位置的索引,如果没有,返回-1
return : int
public static void main(String[] args){
ArrayList<Integer> arrayListTemp = new ArrayList<>();
for (int i=1;i<=3;i++){
arrayListTemp.add(i*100);
}
System.out.print("11.\t");
System.out.println("200在列表中出现的第一个位置的索引:" + arrayListTemp.indexOf(200));
}
12. isEmpty()
如果列表为空,返回true,反之false
return : boolean
public static void main(String[] args){
ArrayList<Integer> arrayListTemp = new ArrayList<>();
for (int i=1;i<=3;i++){
arrayListTemp.add(i*100);
}
System.out.print("12.\t");
System.out.println("列表是否为空:" + arrayListTemp.isEmpty());
}
13. iterator()
依适当的顺序返回此列表的元素迭代器
return : Iterator
public static void main(String[] args){
ArrayList<String> list = new ArrayList<>();
for (int i=0;i<5;i++){
list.add(i+"");
}
Iterator<String> iterator = list.iterator();
System.out.print("16.\t");
System.out.print("使用迭代器打印队列元素:");
while(iterator.hasNext()){
String s = iterator.next();
System.out.print(s + " ");
}
System.out.println();
}
14. lastIndexOf(Object o)
返回列表中最后一次出现元素o的位置的索引,如果没有,返回-1
return : int
public static void main(String[] args){
ArrayList<Integer> arrayListTemp = new ArrayList<>();
for (int i=1;i<=3;i++){
arrayListTemp.add(i*100);
}
System.out.print("14.\t");
System.out.println("200在列表中出现的第一个位置的索引:" + arrayListTemp.lastIndexOf(200));
}
15. listIterator()
依适当的顺序返回此列表的列表迭代器
return : ListIterator<E>
public static void main(String[] args){
ArrayList<String> list = new ArrayList<>();
for (int i=0;i<5;i++){
list.add(i+"");
}
ListIterator<String> iterator = list.listIterator();
System.out.print("15.\t");
System.out.print("使用迭代器打印队列元素:");
while(iterator.hasNext()){
String s = iterator.next();
System.out.print(s + " ");
}
System.out.println();
}
16. listIterator(int index)
从列表中的指定位置开始,返回列表中元素的列表迭代器(按正确顺序)。
return : Iterator<E>
public static void main(String[] args){
ArrayList<String> list = new ArrayList<>();
for (int i=0;i<5;i++){
list.add(i+"");
}
ListIterator<String> iterator = list.listIterator(1);
System.out.print("16.\t");
System.out.print("使用迭代器打印队列元素:");
while(iterator.hasNext()){
String s = iterator.next();
System.out.print(s + " ");
}
System.out.println();
}
17. remove(int index)
删除列表指定位置的元素
return : E 返回被删除的元素
public static void main(String[] args){
ArrayList<Integer> arrayListTemp = new ArrayList<>();
for (int i=1;i<=3;i++){
arrayListTemp.add(i*100);
}
System.out.print("17.\t");
System.out.println(arrayListTemp.remove(0));
}
18. remove(Object o)
从列表中删除指定元素的第一个匹配项
return : boolean
public static void main(String[] args){
ArrayList<String> arrayListTemp = new ArrayList<>();
for (int i=1;i<=3;i++){
arrayListTemp.add(""+i);
}
System.out.print("18.\t");
System.out.println(arrayListTemp.remove("1"));
}
19. removeAll(Collection<?> c)
从此列表中删除指定集合中包含的所有元素
return : boolean
public static void main(String[] args){
ArrayList<String> arrayListTemp = new ArrayList<>();
for (int i=1;i<=3;i++){
arrayListTemp.add(""+i);
}
ArrayList<String> arrayListTemp2 = new ArrayList<>();
for (int i=1;i<=2;i++){
arrayListTemp2.add(""+i);
}
System.out.print("19.\t");
System.out.print("删除前:");
printArratList(arrayListTemp);
System.out.print("删除后:");
arrayListTemp.removeAll(arrayListTemp2);
printArratList(arrayListTemp);
System.out.println();
}
20. removeIf(Predicate<? super E> filter)
删除此集合中满足给定谓词的所有元素。
return : boolean
public static void main(String[] args){
ArrayList<Integer> arrayListTemp = new ArrayList<>();
for (int i=1;i<=3;i++){
arrayListTemp.add(i);
}
//定义一个过滤器:过滤掉所有小于2的元素
//格式:Predicate <E> 过滤器名 = 变量 -> 过滤条件
Predicate<Integer> predicate = (i) -> i<2;
System.out.print("20.\t");
System.out.print("删除前:");
printArratList(arrayListTemp);
arrayListTemp.removeIf(predicate);
System.out.print("删除后:");
printArratList(arrayListTemp);
System.out.println();
}
21. removeRange(int fromIndex, int toIndex)
删除[fromIndex,toIndex)区间中的元素
//protected
/**
* removeRange()方法是一个protected方法,需要其子类的对象才能调用,所以此处应该定义一个ArrayList类的子类
* 在里面重写removeRange方法
*/
class MyArrayList extends ArrayList{
MyArrayList list;
public void removeRange(int fromIndex,int toIndex){
super.removeRange(fromIndex,toIndex);
}
}
public static void main(String[] args){
MyArrayList list = new MyArrayList();
for (int i=1;i<=3;i++){
list.add(i);
}
System.out.print("21.");
System.out.print("删除前:");
printArratList(list);
list.removeRange(0,2);
System.out.print("删除后:");
printArratList(list);
System.out.println();
/**
* 但还可以使用另外一种方法替代
*/
{
System.out.println("21的另外一种方式");
ArrayList<Integer> arrayListTemp = new ArrayList<>();
for (int i=1;i<=3;i++){
arrayListTemp.add(i);
}
System.out.print("删除前:");
printArratList(arrayListTemp);
arrayListTemp.subList(0,2).clear();//removeRange()方法的底层逻辑就是这玩意儿
System.out.print("删除后:");
printArratList(arrayListTemp);
System.out.println();
}
}
22. retainAll(Collection<?> c)
只保留指定集合中含有的元素
return : boolean
public static void main(String[] args){
ArrayList<String> arrayListTemp = new ArrayList<>();
for (int i=1;i<=3;i++){
arrayListTemp.add(""+i);
}
ArrayList<String> arrayListTemp2 = new ArrayList<>();
for (int i=1;i<=2;i++){
arrayListTemp2.add(""+i);
}
System.out.print("22.\t");
System.out.print("删除前:");
printArratList(arrayListTemp);
System.out.print("删除后:");
arrayListTemp.retainAll(arrayListTemp2);
printArratList(arrayListTemp);
System.out.println();
}
23. set(int index, E element)
用指定元素替换指定位置的元素
return : E 返回被替换的元素
public static void main(String[] args){
ArrayList<Integer> arrayListTemp = new ArrayList<>();
for (int i=1;i<=3;i++){
arrayListTemp.add(i);
}
System.out.print("23.\t");
System.out.print("替换前:");
printArratList(arrayListTemp);
System.out.print("替换后:");
arrayListTemp.set(0,300);
printArratList(arrayListTemp);
System.out.println();
}
24. size()
返回此列表中元素个数
return : int
public static void main(String[] args){
ArrayList<Integer> arrayListTemp = new ArrayList<>();
for (int i=1;i<=3;i++){
arrayListTemp.add(i);
}
System.out.print("24.\t");
System.out.println("列表中元素个数:" + arrayListTemp.size());
}
25. spliterator()
在此列表中的元素上创建late-binding和故障快速 Spliterator。
return : Spliterator<E>
public static vodi main(String[] args){
}
26. subList(int fromIndex, int toIndex)
返回[fromIndex,toIndex)区间的List<E>元素
return : List<E>
public static void main(String[] args){
ArrayList<Integer> arrayListTemp = new ArrayList<>();
for (int i=1;i<=3;i++){
arrayListTemp.add(i);
}
System.out.print("26.");
List list = arrayListTemp.subList(0,2);
System.out.print("[0,2)区间中的列表元素:");
printArratList(list);
System.out.println();
}
27. toArray()
将列表中的元素都储存在数组中返回
return : Object[]
public static void main(String[] args){
ArrayList<Integer> arrayListTemp = new ArrayList<>();
for (int i=1;i<=3;i++){
arrayListTemp.add(i);
}
Object[] arr = arrayListTemp.toArray();
System.out.print("27.\t");
for (int i=0;i<arr.length;i++){
System.out.print(arr[i] + " ");
}
System.out.println();
}
28. toArray(T[] a)
将列表中的所有元素存储在T类型的数组中返回
return :T[]
public static void main(){
ArrayList<String> arrayListTemp = new ArrayList<>();
for (int i=1;i<=3;i++){
arrayListTemp.add(i+"");
}
String[] arr = new String[arrayListTemp.size()];
arrayListTemp.toArray(arr);
System.out.print("28.\t");
for (String s:arr){
System.out.print(s+ " ");
}
System.out.println();
}
29. trimToSize()
将列表的容量调整为实际大小
public static void main(String[] args){
ArrayList<String> arrayListTemp = new ArrayList<>();
for (int i=1;i<=3;i++){
arrayListTemp.add(i+"");
}
//将列表容量调整为3
arrayListTemp.trimToSize();
}
自定义的打印列表所有元素的方法
public static void printArratList(ArrayList list){
for (int i=0;i<list.size();i++){
System.out.print(list.get(i) + " ");
}
}
4.结语
这些对ArrayList接口中API方法的简单总结,还是开头的话,这些并不是对API方法的深入探索,只是为了在初次使用的时候能够有个大概的了解,中间还有几个方法的用法没总结,待以后知识体系逐渐完备之后会补充的。