集合接口【Collection】之ArrayList
package com.Lucky;
import java.awt.*;
import java.util.LinkedList;
import java.util.List;
/*
ArrayList:
1.底层使用顺序存储结构,可以使用角标获取元素
2.存储的数据是有序的
3.数据可以重复
4.获取数据效率高,修改删除效率低
5.底层结构是: 数组
原理:底层使用数组来实现
从jdk1.8开始,创建空的ArrayList对象默认底层数组长度为0
第一次扩容,长度为10,以后的每一次扩容是原来基础上的1.5倍
ArrayList与数组的区别并不大,ArrayList相当于是数组的进一步封装,使用的场景不同。
ArrayList有对内部数组的操作方法, 数组就没有这些方法。
能数组用来解决的问题,肯定能用ArrayList解决
LinkedList:
1.底层使用双向链表结构
2.对比与ArrayList添加了addFirst,addLast,
removeFirst,removeLast,getFirst,getLast
如何使用: 如果存在较多的新增,删除操作的话,请使用LinkedList
如果要大量根据索引查询的操作,例如遍历,请使用ArrayList
*/
public class ArrayList {
public static void main(String[] args) {
java.util.ArrayList List=new java.util.ArrayList();
java.util.ArrayList List1=new java.util.ArrayList();
LinkedList<Object> objects = new LinkedList<>();
List.add(20);
List.add(40);
List1.add(56);
List1.add(96);
List.add(1,1); //indx是角标位置 element:是插入的元素
List.addAll(List1); //addAll:添加集合
List.addAll(1,List1); //addAll:在指定位置添加集合
System.out.println(List);
System.out.println(List1);
System.out.println("----------------清除数据-----------------");
List1.clear(); //清除集合中的全部数据
System.out.println(List1);
System.out.println(List1.isEmpty()); //判断集合是否为空
List1.add(566);
List1.add(966);
System.out.println(List1.contains(56)); //查看是否包含指定元素,返回true或false
System.out.println(List1.containsAll(List)); //查看是否包含指定元素集合,返回true或false
System.out.println(List);
List.remove(1); //删除元素56
System.out.println(List);
System.out.println(List.removeAll(List1)); //删除在List集合中对的所有List1集合元素
System.out.println("----------------other方法-----------------");
List.add(566);
List.add(966);
List.retainAll(List1); //保留List1集合的元素
System.out.println(List);
System.out.println(List.get(1)); //获取角标为一的元素
List.set(1,56); //设置角标为1的值为56
System.out.println(List);
System.out.println(List.size()); //集合元素数
//////////////////////////////////////LinkedList独有的方法////////////////////////////////////////
objects.addFirst(11);
objects.addLast(12);
objects.add(110);
objects.add(120);
objects.removeFirst();
objects.removeLast();
objects.getFirst();
objects.getLast();
System.out.println(objects);
}
}
底层源码分析:
①ArrayList:

②LinkedList:

浙公网安备 33010602011771号