ArrayList
ArrayList继承了AbstractList,并且底层是通过维护了一个Object数组实现的,特点是查询速度快、增删慢、线程不安全。
当数据需要频繁的查询,而增加删除较少的时候,使用ArrayList数组存储数据效率更高。
API使用示例
add
@Test
public void add () {
//add:将指定的元素添加到此列表的尾部。
ArrayList<Object> array = new ArrayList<>();
array.add(123); //添加整数类型
array.add("123"); //添加字符串类型
array.add('1'); //添加字符类型
System.out.println(array); //打印结果
}
add(有参)
@Test
public void addTwoArgs () {
//add(int index, E element):将元素插入此列表中的指定位置。
ArrayList<Object> array = new ArrayList<>();
array.add("World");
array.add(0,"Hello");
System.out.println(array);
}
addAll
@Test
public void addAll () {
//addAll(Collection<? extends E> c): 根据Collection集合内容添加到ArrayList集合中s
ArrayList<Object> array = new ArrayList<>();
Collection<Object> collection = new ArrayList<>(); //创建一个Collection集合
collection.add("Collection list"); //添加一条数据
boolean addAll = array.addAll(collection); //使用ArrayList集合调用addAll方法,放入Collection集合
System.out.println(addAll); //元素添加成功,输出为true
System.out.println(array); //打印ArrayList集合
addAll(有参)
@Test
public void addAllTwoArgs () {
//addAll(int index, Collection<? extends E> c):从指定的位置开始,将指定 collection 中的所有元素插入到集合中
ArrayList<Object> array = new ArrayList<>();
array.add("China");
Collection<Object> collection = new ArrayList<>(); //创建一个Collection集合
collection.add("Hello"); //添加一条数据
boolean addAll = array.addAll(0, collection); //插入数据到ArrayList集合的第0号索引位置
System.out.println(addAll); //打印为true
System.out.println(array); //打印ArrayList集合内容
}
clear
@Test
public void clear () {
//clear:清除集合所有元素
ArrayList<Object> array = new ArrayList<>();
array.add("Bear");
System.out.println(array); //打印结果为Bear
array.clear(); //清除集合元素
System.out.println(array); //打印结果为空
}
clone
@Test
public void Clone () {
//clone: 克隆打印集合的内容
ArrayList<Object> array = new ArrayList<>();
array.add("clone method");
Object clone = array.clone(); //调用clone方法
System.out.println(clone); //打印会显示集合的元素内容
}
contains
@Test
public void contains () {
//contains: 如果集合中包含指定的元素,则返回 true,否则false。
ArrayList<Object> array = new ArrayList<>();
array.add("123");
boolean contains = array.contains("Bear"); //调用contains方法判断
System.out.println(contains); //集合中不存在指定元素值,打印为false
}
ensureCapacity
@Test
public void ensureCapacity () {
//ensureCapacity:对数组进行初始化扩容
ArrayList<Object> array = new ArrayList<>();
array.ensureCapacity(10000); //对数组增加了10000个初始容量
}
get
@Test
public void get() {
//get:获取指定位置的元素
ArrayList<Object> array = new ArrayList<>();
array.add("get0号");
array.add("get1号");
System.out.println(array.get(1)); //根据get方法获取集合1号元素,打印get1号
}
indexOf
@Test
public void indexOf() {
//indexOf:根据参数返回首次出现集合内容的索引位置
ArrayList<Object> array = new ArrayList<>();
array.add("indexOf method--0");
array.add("indexOf method--1");
System.out.println(array.indexOf("indexOf method--0")); //参数是0号元素,所以返回结果为0
}
isEmpty
@Test
public void isEmpty() {
//isEmpty:判断集合元素是否为空,空则返回true,否则false
ArrayList<Object> array = new ArrayList<>();
array.add("isEmpty");
System.out.println(array.isEmpty());
}
lastIndexOf
@Test
public void lastIndexOf() {
//lastIndexOf:根据参数返回最后一次出现集合内容的索引位置,和indexOf方法类似
ArrayList<Object> array = new ArrayList<>();
array.add("lastIndexOf--0");
array.add("lastIndexOf--1");
System.out.println(array.lastIndexOf("lastIndexOf--1")); //返回为1号索引
}
remove
@Test
public void remove() {
//remove(int index):移除指定的集合元素
ArrayList<Object> array = new ArrayList<>();
array.add("remove");
System.out.println(array.remove(0)); //移除第0号元素
}
remove(有参)
@Test
public void removeObj() {
//remove(Object o):移除指定的集合元素,参数是对象类型
ArrayList<Object> array = new ArrayList<>();
array.add("removeObj");
System.out.println(array.remove("removeObj")); //根据指定字符串进行筛选移除
System.out.println(array); //打印为空集合
}
set
@Test
public void set() {
//set:根据参数替换指定位置的集合元素
ArrayList<Object> array = new ArrayList<>();
array.add("set");
System.out.println(array.set(0,"new set")); //用new set内容替换0号set字符内容s
System.out.println(array);
}
size
@Test
public void size () {
//size:返回集合元素的个数
ArrayList<Object> array = new ArrayList<>();
int size = array.size();
System.out.println(size); //没有添加元素,打印为0
}
toArray
@Test
public void toArray() {
//toArray:将集合转换为数组
ArrayList<Object> array = new ArrayList<>();
array.add("toArray");
Object[] obj = array.toArray();
System.out.println(obj[0]); //打印转换后数组的第0号内容,也就是集合里添加的内容
}
toArray(有参)
@Test
public void toArrayArgs() {
//toArray(T[] a):根据参数指定集合显示的长度,如果参数长度大于集合,打印多余结果则为null
ArrayList<Object> array = new ArrayList<>();
array.add("hello");
array.add("world");
array.add("world");
Object[] obj = array.toArray(new Object[]{1,2,3,4}); //集合没有4个元素,所以根据参数4会打印为null
for (Object o : obj) { //增强for循环遍历数组
System.out.println(o);
}
}
trimToSize
@Test
public void trimToSize() {
//trimToSize:将此 ArrayList 实例的容量调整为列表的当前大小。
ArrayList<Object> array = new ArrayList<>();
array.trimToSize(); //恢复集合的初始容量
}
iterator
@Test
public void iterator() {
//iterator:返回一个 迭代器接口
ArrayList<Object> array = new ArrayList<>();
array.add(1);
array.add(2);
array.add(3);
Iterator<Object> iterator = array.iterator();
while (iterator.hasNext()){ //使用迭代器接口方法遍历集合
Object next = iterator.next();
System.out.println(next);
}
}
subList
@Test
public void subList() {
//subList:返回指定区间的元素
ArrayList<Object> array = new ArrayList<>();
array.add("subList--0");
array.add("subList--1");
array.add("subList--2");
List<Object> subList = array.subList(1, 2); //指定1号-2号索引位置的值
System.out.println(subList); //打印为subList--1
}
removeAll
@Test
public void removeAll() {
//removeAll:根据Collection集合移除ArrayList集合的元素
ArrayList<Object> array = new ArrayList<>();
array.add(123);
Collection<Object> collection = new ArrayList<>();
collection.add(123); //根据Collection集合删除ArrayList的元素值
boolean b = array.removeAll(collection);
System.out.println(b); //打印为true
}
listIterator
@Test
public void listIterator() {
//listIterator无参:返回一个集合迭代器
ArrayList<Object> array = new ArrayList<>();
array.add("listIterator--0");
array.add("listIterator--1");
ListIterator<Object> listIterator = array.listIterator();
while (listIterator.hasNext()) { //使用集合迭代器接口方法遍历ArrayList
Object next = listIterator.next();
System.out.println(next);
}
}
listIterator(有参)
@Test
public void listIteratorArgs() {
//listIterator有参: 返回一个带参数的集合迭代器接口
ArrayList<Object> array = new ArrayList<>();
array.add("listIterator");
ListIterator<Object> listIterator = array.listIterator(0); //指定集合元素的位置,超出集合长度则报异常
while (listIterator.hasNext()) { //使用迭代器方法遍历集合
Object next = listIterator.next();
System.out.println(next);
}
}
forEach
@Test
public void forEach() {
//forEach:用于快速遍历集合
ArrayList<Object> array = new ArrayList<>();
array.add("forEach--0");
array.add("forEach--1");
array.forEach(System.out :: println);
}
stream
@Test
public void stream() {
//stream:返回一个stream流接口
ArrayList<Object> array = new ArrayList<>();
array.add("stream--0");
array.add("stream-1");
Stream<Object> stream = array.stream();
System.out.println(stream.count()); //计算集合总数
}
parallelStream
@Test
public void parallelStream() {
//parallelStream:返回一个顺序流
ArrayList<Object> array = new ArrayList<>();
array.add("parallelStream");
Stream<Object> parallelStream = array.parallelStream();
parallelStream.forEach(System.out::println); //使用forEach方法遍历集合元素
}
sort
@Test
public void sort() {
//sort:对集合进行排序
ArrayList<Integer> array = new ArrayList<>();
array.add(1);
array.add(2);
array.sort((o1, o2) -> o2-o1); //使用lambda表达式写法,使集合倒序排列打印
for (Integer sort : array) {
System.out.println(sort);
}
}
spliterator
@Test
public void spliterator(){
//spliterator:用于分割和遍历集合
ArrayList<Integer> array = new ArrayList<>();
array.add(123);
array.add(321);
Spliterator<Integer> spliterator = array.spliterator();
int characteristics = spliterator.characteristics(); //根据集合特征返回一个整数值
System.out.println(characteristics);
spliterator.forEachRemaining(System.out::println); //遍历集合内容
}