2022-08-05 学习日记(25th day)集合框架---List

目录

集合

List集合

一:ArrayList集合

常用方法:

List集合中存放的数据的特点:

用List集合写一个工具类用于数组与List之间的转换:

二:LinkedList集合

三:Vertor集合

三种集合的区别:(面试题)


集合

首先提个问题:集合是干什么的?

字面上呢就是一个存放引用数据类型的一个容器,集合中存放的是引用类型(对象的内存地址),集合不能储存基本数据类型,如果你看到了那就是系统自动进行装箱拆箱操作了主要是方便我们操作数据的。

集合分为两个:

一:Collection<E>,存放单只的最大父接口

       List<E>:线性表:和数组类似,List可以动态增长,查找元素效率高,插入删除元素的效率低,因为会引起其他的元素位置的改变。------是一个泛型

       Set<E>:也是线性表,检索元素效率低,删除和插入的效率高,插入和删除不会使元素移位。-----也是一个泛型

二:Map<K,V>,存放对值的最大父接口

       Map(映射)用于保存具有映射关系的数据,Map保存着两组数据,key和value                                                    key和value都可以是任意的引用数据类型,但key是不能重复的。

List集合

一:ArrayList集合

  • 内部结构是一个动态的Object[]的数组
  • 默认的容量为10,在添加第一个元素时将这个默认容量添加给底层数组。
  • 扩容:扩容1.5倍

常用方法:

首先先创建一个集合

List<E> list=new ArrayList<>();(利用多态,向上转型)

list.add(E e)向list里添加元素,元素可以是null,元素可以重复添加
list.addAll(list2)将list2添加到list后面
list.get(int index)从List里获取下标为index的元素
list.remove(int index)从List里删除下标为index的元素
list.removeAll()删除List里所有元素
list.contains(E e)判断list集合里是否有e元素
list.isEmpty()判断list集合是否为空
List.of(数组)把这个数组当作一个元素存到集合中(数组转集合)

List集合中存放的数据的特点:

1.数据有顺序,按照添加的顺序排列

2.数据可以重复

用List集合写一个工具类用于数组与List之间的转换:

public class ArrayConvertUtil {
    public static Object[] toArrayConvert(List list){
//        return list.toArray();
        Object[] objects=new Object[list.size()];
        for (int i = 0; i <list.size() ; i++) {
            objects[i]=list.get(i);
        }
        return objects;
    }
    public static List toListConvert(Object [] arr){
//        return List.of(arr);
        List list = new ArrayList(arr.length);
        for (Object o : arr) {
            list.add(o);
        }
        return list;
    }
}

二:LinkedList集合

  • LinkedList底层采用双向链表的结构,比较适合做高频率的新增和删除。不适合检索元素(链表的特点)
  • 无默认容量

三:Vertor集合

  • 底层采用的是数组结构。
  • 默认容量为10
  • 扩容:扩容为原来的2倍。

Vertor中的方法都是被synchronized所修饰的,这就代表了他的效率会比较低

三种集合的区别:(面试题)

ArrayList和LinkedList的区别:

ArrayList是基于动态数组实现的集合,LinkedList是基于双链表实现的集合。

查找时ArrayList速度比LinkedList快,增加或删除时LinkedList比ArrayList速度快

ArrayList是通过下标找到元素,LinkedList是移动指针遍历每个元素找到需要的元素

相同点:

        都是线程异步的不安全线程的集合,都实现了List接口(继承了Collection)

ArrayList与Vector的区别:

ArrayList:线程异步,线程不安全,性能高

Vertor:线程同步,线程安全,性能低

 相同点:

        都实现了List接口,都是有序集合。

Collection和Map的区别:一个是单向链表,一个是双向链表。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值