2021-08-06 List的子类 ArrayList,LinkedList集合

ArrayList和LinkedList集合

ArrayList集合

java.util.ArrayList 集合数据存储的结构是数组结构。元素增删慢,查找快,由于⽇常开发中
使⽤最多的功能为查询数据、遍历数据,所以 ArrayList 是最常⽤的集合。

常用方法

1.boolean add(Object obj) 将指定元素obj追加到集合的末尾
2.Object get(int index) 返回集合中指定位置上的元素
3.int size() 返回集合中的元素个数
4.boolean add(int index, Object obj) 将指定元素obj插入到集合中指定的位置
5.Object remove(int index) 从集合中删除指定index处的元素,返回该元素
6.void clear() 清空集合中所有元素
7.Object set(int index, Object obj) 用指定元素obj替代集合中指定位置上的元素
8.boolean isEmpty() 判断集合是否为空
9.boolean contain(Object obj) 判断集合是否存在该元素
代码实现

package arrayList;

import java.util.ArrayList;

public class ArrayListDemo {
    public static void main(String[] args) {
        ArrayList<String> arrayList = new ArrayList<>();
        //将指定元素obj追加到集合的末尾
        arrayList.add("1");
        arrayList.add("2");
        arrayList.add("3");
        arrayList.add("5");
        //返回集合中指定位置上的元素
        System.out.println(arrayList.get(1));
        //nt size() 返回集合中的元素个数
        System.out.println(arrayList.size());
        //boolean add(int index, Object obj) 将指定元素obj插入到集合中指定的位置
        arrayList.add(1, "4");
        //Object remove(int index) 从集合中删除指定index处的元素,返回该元素
        arrayList.remove(1);
        //Object set(int index, Object obj) 用指定元素obj替代集合中指定位置上的元素
        arrayList.set(1, "6");
        //boolean isEmpty() 判断集合是否为空
        System.out.println(arrayList.isEmpty());
        //boolean contain(Object obj) 判断集合是否存在该元素
        System.out.println(arrayList.contains("2"));
        //void clear() 清空集合中所有元素
        arrayList.clear();
    }
}

LinkedList集合

java.util.LinkedList 集合数据存储的结构是链表结构。⽅便元素添加、删除的集合。
LinkedList是⼀个双向链表: 找到头尾非常方便 里面有大量操作首位元素的方法
2021-08-06 List的子类 ArrayList,LinkedList集合

常用方法

public void addFirst(E e) :将指定元素插⼊此列表的开头。
public void addLast(E e) :将指定元素添加到此列表的结尾。
public E getFirst() :返回此列表的第⼀个元素。
public E getLast() :返回此列表的最后⼀个元素。
public E removeFirst() :移除并返回此列表的第⼀个元素。
public E removeLast() :移除并返回此列表的最后⼀个元素。
public E pop() :从此列表所表示的堆栈处弹出⼀个元素。
public void push(E e) :将元素推⼊此列表所表示的堆栈。
public boolean isEmpty() :如果列表不包含元素,则返回true。

public class LinkedListDemo {
 public static void main(String[] args) {
 LinkedList<String> link = new LinkedList<String>();
 // 添加元素
 link.addFirst("abc1");
 link.addFirst("abc2");
 link.addFirst("abc3");
 System.out.println(link);
 // 获取元素
 System.out.println(link.getFirst());
 System.out.println(link.getLast());
 // 删除元素
 System.out.println(link.removeFirst());
 System.out.println(link.removeLast());
 while (!link.isEmpty()) { // 判断集合是否为空
 System.out.println(link.pop()); // 弹出集合中的栈顶元素
 }
 System.out.println(link);
 }
}

ArrayList集合和LinkedList集合区别

底层实现的区别
ArrayList:数组
LinkedList:链表
1.对于插入/删除 单个操作而言 ——>LinkedList 比较快
2.但是:先查询,找到要插入/删除的位置的前一个节点查询+插入(删除)因为LinkedList没有下标,
所以查询非常慢所以对整个操作而言 ArrayList 比较快

ArrayList和vector的区别

1.线程安全分析
vector加了锁(synchronized),线程安全,效率低
2.扩容容量
ArrayList 扩容为原来容量的1.5倍
vector 扩容为原来容量的2倍

上一篇:ArrayList在头尾操作元素和LinkedList使用特有方法在头尾操作元素的效率 提示 : 效率比较, 就是ArrayList 头尾增删用的时间, 与LinkedList头尾增删用的时间,


下一篇:第十二章 集合(Collection ArrayList LinkedList 泛型)