package com.hqyj.api.collections;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* List: 有序(自然顺序)有重复的集合
* 添加的先后顺序
* 可以存储两个或多个相同的元素
*
* 4个实现类:
* ArrayList:底层封装了一个Object[],elementData,线程不安全
* LinkedList:底层是一个链表,(Node)
* Vector:底层也是数组,线程安全,效率低
* Stack:底层也是数组,不过遵循先进后出的原则
*
*
* ArrayList的扩容机制:
* 1.当添加第一个元素时,会执行grow方法,给Object[]给默认容量 是10
* 2.当添加后续元素<10时,不会进行扩容
* 3.当添加元素超过10时会执行grow方法,进行扩容,扩容机制1.5倍,15,20
*
*/
public class TestList {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(1);
list.add(2);
list.add(2);
list.add(3);
System.out.println(list);
System.out.println("=====");
//2。add(int index, E element)
list.add(2,5);//在下标为2的位置添加元素5
System.out.println(list);
//3.addAll(Collection<? extends E> c)
System.out.println("==addAll()==");
List<Integer> list2 = new ArrayList<>();
list2.add(8);
list2.add(9);
list2.addAll(list);
System.out.println(list2);
//4.clear()
System.out.println("==clear()==");
System.out.println("清空前的list2:"+list2);
list2.clear();
System.out.println("清空后的list2:"+list2);
//5.contains(Object o)
System.out.println("==contains()==");
System.out.println("list:"+list);
System.out.println("list中是否包含8:"+list.contains(8));
System.out.println("list中是否包含5:"+list.contains(5));
//6.containsAll(Collection<?> c)
System.out.println("==containsAll()==");
List<Integer> list3 = new ArrayList<>();
list3.add(3);
list3.add(1);
System.out.println("list3:"+list3);
System.out.println("list中是否包含list3中所有元素:"+list.containsAll(list3));
//7.equals(Object o)
System.out.println("==equals()==");
List<Integer> list4 = new ArrayList<>();
list4.add(3);
list4.add(1);
System.out.println("list4中的元素:" + list4);
System.out.println("list4中的元素和list3中的元素是否相等:"+list4.equals(list3));
//8.get(int index)
System.out.println("==get()==");
System.out.println("list中下标为2的元素:"+list.get(2));
//9.haseCode()
System.out.println("==hashCode()==");
System.out.println("list的哈希码值:"+list.hashCode());
//10.indexOf(Object o)
System.out.println("==indexOf(Object o) ==");
System.out.println("list:"+list);
System.out.println("list中元素2第一次出现的下标:"+list.indexOf(2));
//11.remove(int index)
System.out.println("==remove(int index) ==");
System.out.println("list3:" + list3);
System.out.println("移除list3中下标为1的元素");
list3.remove(1);
System.out.println("移除后list3" + list3);
//12.removeAll(Collection<?> c)
System.out.println("==removeAll(Collection<?> c) ==");
System.out.println("list4:"+list4);
System.out.println("list:"+list);
list.removeAll(list4);
System.out.println("把list中所有list4包含的元素移除后:"+list);
//13.retainAll(Collection<?> c)
System.out.println("==retainAll(Collection<?> c) ==");
List<Integer> list5 = new ArrayList<>();
list5.add(2);
System.out.println("list5:"+list5);
System.out.println("list:"+list);
list.retainAll(list5);
System.out.println("list中只保留list5中的元素");
System.out.println("list:"+list);
//14.set()
System.out.println("==set()==");
List<Integer> list6 = new ArrayList<>();
list6.add(1);
list6.add(3);
list6.add(3);
list6.add(4);
list6.add(5);
System.out.println("list6:"+list6);
list6.set(1,2);
System.out.println("把下标为1的元素换成2");
System.out.println("list6:"+list6);
//15.size()
System.out.println("==size()==");
System.out.println("list6的长度:"+list6.size());
//16.subList()
System.out.println("==subList()==");
System.out.println("截取list6中下标1到4(不包括4)的元素");
List<Integer> list7 = list6.subList(1,4);
System.out.println(list7);
//17.toArray()
System.out.println("==toArray()==");
Object[] ob =list6.toArray();
System.out.println(Arrays.toString(ob));
//18.toArray(T[] a)
System.out.println("==toArray(T[] a)==");
Integer [] it = list6.toArray(new Integer[list6.size()]);
System.out.println(Arrays.toString(it));
}
}
List的方法以及ArrayList的扩容机制
最新推荐文章于 2024-03-09 12:15:32 发布