Java常见集合类一(List)

一、Collection接口及其常见实现子类、子接口

由上图可以看出,Collection 接口实现了 Iterable 接口;

Iterable接口是Java集合类中的核心接口之一,实现该接口的类具有迭代功能,它提供了能够对实现它的子类 中的元素进行逐个遍历的方式,iterator()方法和 foreach() 方法

Collection接口包含了大部分容器常用的一些方法,实现该接口的集合为单列集合,其实现子接口主要包括 List 接口和 Set 接口

1. List 接口

实现该接口的类的特征为:有序的,可重复的集合;此处的有序是指插入的顺序和遍历得到的结果的顺序是相对应的。

其常用方法如下(接口中的方法没有方法体,所以这些方法是留给子类实现的):

 下面介绍 List 接口的常见实现子类

1)ArrayList

底层数据结构:动态类型顺序表(可以动态扩容的连续空间);
类声明解读:

1. ArrayList 是以泛型方式实现的,使用时必须要先实例化

2. ArrayList 实现了 RandomAccess 接口,表明 ArrayList 支持随机访问      

3. ArrayList 实现了 Cloneable 接口,表明 ArrayList 是可以 clone 的

4. ArrayList 实现了 Serializable 接口,表明 ArrayList 是支持序列化的

5. 和 Vector 不同,ArrayList 不是线程安全的,在单线程下可以使用,在多线程中可以选择 Vector 或者 CopyOnWriteArrayList

常用构造方法:

ArrayList():默认无参构造方法,用来创建一个空的ArrayList对象,初始容量为10。

ArrayList(int initialCapacity):创建一个空的ArrayList对象,指定初始容量。

ArrayList(Collection<? extends E> c):创建一个包含指定集合元素的ArrayList对象。例如:

    public static void main(String[] args) {
        Set<Integer> set = new HashSet<>();
        set.add(1);
        set.add(2);
        List<Integer> list = new ArrayList<>(set);
        System.out.println(list);
    }

 其他常用方法和 List 接口的常用方法一致;

ArrayList 扩容机制:在插入的时候自动扩容:首先在插入的时候会检查是否需要扩容,如果需要扩容,则初步预估按照 1.5 倍大小扩容,如果用户所需大小超过预估 1.5 倍大小,则按照用户所需大小扩容,真正扩容之前检测是否能扩容成功,防止太大导致扩容失败,最后使用 Arrays.copeOf方法进行扩容;

2)LinkedList

底层数据结构:双向链表
常用构造方法:

LinkedList():默认无参构造,创建一个空的LinkedList对象。

LinkedList(Collection<? extends E> c):创建一个包含指定集合中所有元素的LinkedList对象。

 其他常用方法:

LinkedList 当做链表使用时,此时对应的方法与 List 一致;

也可以当做栈来使用时,此时对应的方法为:

 也可以当做队列来使用,此时对应的方法为:

3)List 和 LinkedList 区别

2.Set 接口 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rcnhtin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值