集合概述

集合概述

1 数组和集合区别

在这里插入图片描述

2. 集合常见的方法

在这里插入图片描述

3. 常用集合分类

3.1 Collection接口下的
  • List接口
    • LinkList:链表, 插入删除, 没有同步, 线程不安全
    • ArrayList: 数组, 随机访问, 没有同步, 线程不安全
    • Vector:数组, 同步, 线程安全
  • Set接口
    • HashSet:底层数据结构是哈希表(是一个元素为链表的数组)
    • TreeSet:底层数据结构是红黑树(是一个自平衡的二叉树)
    • LinkedHashSet:底层数据结构由哈希表和链表组成。
3.2 Map接口下的
  • HashTable:同步, 线程安全
  • HashMap:没有同步, 线程不安全-
  • TreeMap:红黑树对所有的key进行排序
  • IdentifyHashMap

4. List和set的区别

  • 重复元素:list可以允许重复元素,set不允许
  • 有序性:list是一个有序的容器,保持了每个元素的插入顺序。即输出顺序就是输入顺序,而set方法是无序容器,无法保证每个元素的存储顺序,TreeSet通过 Comparator 或者 Comparable 维护了一个排序顺序
  • null元素:list可以插入多个null元素,而set只允许插入一个null元素

5. 迭代器(Iterator)

Collection的源码中继承了Iterable,有iterator()这个方法

在这里插入图片描述

Iterable是一个接口,它有iterator()这个方法,返回的是Iterator

Iterator也是一个接口,它只有四个方法:

  • hasNext()
  • next()
  • remove()
  • forEachRemaining()

在这里插入图片描述

在ArrayList内部首先是定义一个内部类Itr,该内部类实现Iterator接口,如下:
在这里插入图片描述

而ArrayList的iterator()方法实现

public Iterator<E> iterator() {
    return new Itr();
}

Iterator(迭代器)是一个接口,它的作用就是遍历容器的所有元素。

ArrayList<String> arrayList = new ArrayList<>();
Iterator<String> iterator = arrayList.iterator();
Iterator的意义

遍历ArrayList 和Linklist是十分容易的,遍历Tree容器也不难,但是实现机制是完全不同,而遍历Set容器就无从下手了。 所以Java设计了Iterator 这个接口,分别让各种容器自己去重写里面的hasNext()和next()方法。不用关心各种容器的遍历机制,只要使用Iterator,会让人觉得各种容器的遍历方法都是一样的,这就是Java接口的重要意义。

几个遍历的比较
  • for一般可以用于简单的顺序集合,并且可以预测集合的大小;
  • foreach可以遍历任何集合或者数组,但是使用者需要知道遍历元素的类型。
  • iterator是最强大的,它可以随之修改元素内部的元素。可以在遍历的时刻用remove()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值