尚硅谷笔记-Java 集合

一、单列集合框架的使用

集合的学习需要重点掌握集合的特点和集合的使用方法。集合分为单列集合和双列集合。

单列集合的顶级接口为Collection接口。List接口和Set接口继承Collection接口。

List接口的实现类有三个:ArrayList、LinkedList、Vector

ArrayListLinkedListVector

1.元素有序

2.元素可重复

3.有索引

4.线程不安全

5.底层数据结构:数组

1.元素有序

2.元素可重复

3.有索引

4.线程不安全

5.底层数据结构:双向链表

1.元素有序

2.元素可重复

3.有索引

4.线程安全

5.底层数据结构:数组

LinkedList本质上无索引,但是java为其提供了很多根据索引操作元素的方法。

Set接口的实现类有三个:HashSet、LinkedHashSet、TreeSet

HashSetLinkedHashSetTreeSet

1.元素无序

2.元素唯一

3.无索引

4.线程不安全

5.底层数据接口:哈希表

1.元素有序

2.元素唯一

3.无索引

4.线程不安全

5.底层数据接口:哈希表+双向链表

1.可对元素进行排序

2.元素唯一

3.无索引

4.线程不安全

5.底层数据结构:红黑树

LinkedHashList继承HashSet。

二、Collection接口的使用

1. 概述:单列集合的顶级接口

2. 使用

        a.  创建:Collection<E> 对象名 = new 实现类对象<E>()

        b. <E>泛型,决定了集合中能存储什么类型的数据,可以统一元素类型。泛型中只能写引用数据类型,如果不写,默认object类型,此时什么类型的数据都可以存储。

        c. 泛型细节:等号前面的泛型必须写,等号后面的泛型可以不用写。jvm会根据前面的泛型推导出后面的泛型。

3. 常用方法

boolean add (E e);//将给定的元素添加到当前集合中
boolean addAll(Collection<? extends E> c);//将另一个集合元素添加到当前集合中
void clear();//清除集合中所有的元素
boolean contains(Object o);//判断当前集合中是否包含指定的元素
boolean isEmpty();//判断集合是否为空
boolean remove(Object o);//将指定的元素从集合中删除
int size();//返回集合中的元素个数
Object[] toArray();//把集合中的元素,存储到数组中

三、迭代器

1.迭代器基本使用

1.主要作用:遍历集合

2.获取:Collection中的方法:

Iterator<E> iterator()

3.方法:

boolean hasNext();//判断集合中有没有下一个元素
E next();//获取下一个元素
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("Hyunjin");
        list.add("Felix");
        list.add("hello");
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()){
            String next = iterator.next();
            System.out.println(next);
        }

    }

2.迭代器迭代过程

int cursor;//下一个元素索引位置
int lastRet=-1;//上一个元素索引位置

hashNext()判断下一个位置是否还有元素,若有,就可以使用next()获取那个元素。

3.迭代器底层原理

1.获取Iterator的时候怎么获取的:

Iterator iterator=list.iterator()

我们知道Iterator是一个接口,等号右边一定是它的实现类对象。

问题:Iterator接受的到底是哪个实现类对象呢?\rightarrow ArrayList中的内部类Itr对象

注意:只有ArrayList使用迭代器的时候Iterator接口才会指向Itr,其他的集合使用迭代器Iterator就指向的不是Itr了。例如HashSet:

  • 14
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值