java集合教室描述_Java集合框架简单复习

Java集合框架复习

Collection:首先,根接口为Collection接口。首先,所有的集合的根接口是Collection,Collection接口继承了Iterable接口,因此,所有的集合子类都可以当做迭代器来使用。

对于Collection接口,有以下常见子接口:

List是一个继承Collection接口的接口,它是一个有序集合,它能使用户可以指定位置放某个元素。

Set也是一个继承Collection接口的接口,这个集合里面是不允许存放重复的元素的。

Queue也是一个继承Collection接口的接口,该集合的特点是允许元素进行FIFO,即first in first out——先进先出的规则。所有的新元素都是添加到队列的尾部。它的poll()方法用于移除并且返回头部元素,与remove不同的是,若元素为空,poll()返回空,而remove则抛出异常java.util.NoSuchElementException;类似的,peek()和element()是用于返回队列的头部(但不会移除元素),而对于空队列,element()同样会抛出异常java.util.NoSuchElementException。还有一个offer()方法,与add()方法不同的是,offer()方法可以用于受限容量的队列里,当添加不成功时,则返回false,而add方法则会抛出一个运行时异常。

BeanContext也是一个实现Colletion的接口,它是一个Javabeans容器,这里不讨论。

对于List接口,有以下常见子类:

AbstractList是一个抽象类,提供了List的简单实现和一些抽象方法。

Vector是一个继承了AbstractList类的类,Vector是线程安全的,如不需要线程安全的,可以使用ArrayList来替代它。

Stack是一个继承Vector类的类,它具有LIFO——后进先出的特点,即栈的数据结构。Peek()方法用于取顶,pop()方法用于弹出栈顶的一个元素,push()用于将一个元素压入栈中。

ArrayList是一个继承了AbstractList的类,跟Vector类类似,唯一区别就是ArrayList是不同步的,即线程不安全的,需要用Collections.synchronizedList来包裹。

AbstractSequentialList是一个继承AbstractList的抽象类。

LinkedList是继承了AbstractSequentialList的一个类,同时它也实现了Deque接口,注意一下,LinkedList是线程不安全的,若同步需要用Collections.synchronizedList来包裹。

对于Set接口,有以下常见子类:

SortedSet是一个继承Set接口的接口,所有的SortedSet元素必须实现比较器接口(Comparator接口或Comparable接口),这些元素必须是可比较的。

NavigableSet是一个继承SortedSet接口的接口,相比之下,添加了一些可以随意访问元素或具有导航功能的集合。

AbstractSet是一个实现Set接口的抽象类并且继承了AbstractCollection抽象类,并没有覆写它的任何方法,仅仅是增加了equals()和hashcode()方法。

HashSet是一个实现了Set接口的类,线程不安全,需要用Collections.synchronizedSet来包裹,利用了哈希表的性质,因此基本操作消耗线性时间。

LinkedHashSet继承了HashSet类,也是线程不安全的,具有链表的性质。

TreeSet是一个继承了AbstractSet并且实现了NavigableSet接口的 类,它的基本操作具有Log(n)的时间效率,原理是基于二叉树的结构。

对于Queue接口,有以下常见子类:

BlockingQueue是一个继承Queue的接口,可用于生产者/消费者。

每次我们尝试获取下一个元素的时候,Iterator fail-fast属性检查当前集合结构里的任何改动。如果发现任何改动,它抛出ConcurrentModificationException。Collection中所有Iterator的实现都是按fail-fast来设计的(ConcurrentHashMap和CopyOnWriteArrayList这类并发集合类除外)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值