learning Collection Framwork

Collection

是一个容器类抽象接口,自jdk1.2及以后采用,一般容器都有增删移改操作,在多线程程序中,就有安全隐患。先看其子接口ListSet

List

是有序的 collection序列,元素可重复,该集合体系有索引。先看其子接口ArrayList, LinkedList, Vector三个实现类。
ArrayList:其底层数据结构基于数组结构;特点:查询速度快,增删稍慢,线程不同步
取出方式用iterator()和listIterator();
LinkedList:其底层数据结构基于链表结构;特点: 增删速度快,查询速度慢,线程不同步
特有方法:
addFirst(), addLast()
getFirst(),getLast()获取元素并返回,如果集合中没有元素会抛出NoSuchElementException;
removeFirst(),removeLast()获取元素并返回,但是该元素会被从集合中删除,如果集合中没有元素会抛出NoSuchElementException;
在JDK1.6出现替代方法:offerFirst(), offerLast(), peekFirst(), peekLast(), popFirst(), popLast();获取元素并返回,,如果集合中没有元素会返回null;
Vector:其底层数据结构基于数组,这个实现类是同步的,自jdk1.0就有了,属于元老级的集合类,逐渐被ArrayList替代了,比较浪费空间;
取出方式用返回值为枚举Enumeration类型的 elements(),由于枚举的名称和方法过长,逐渐被Iterator取代了。
Note 1:List集合元素是否相同,涉及到的contains()和remove()方法底层依赖的还是元素的equals方法。
Note 2:Java的更新,主要会涉及安全,效率,简化书写

Set

是无序的Collection序列,就是表现形式在,有序地存入元素,并不会有序取出元素,但这些元素在hash Table 里的hashCode值是有序的,不可重复;

HashSet

底层数据结构是hash Table,线程是非同步的。

Note 1:HashSet集合元素是否相同,涉及到的contains()和remove()方法底层依赖的还是元素的hashCode()和equals()方法。首先判断hash值,再通过equals()进一步的判断。

TreeSet

底层数据结构是二叉树,保证集合元素的唯一性compareTo方法返回0;TreeSet排序的前提要使其具备可比较性,因此,要implements Comparable接口,覆盖compareTo方法,这种方式也成为元素的自然顺序。

Note 1:排序时,主要条件相同时,一定要判断下次要条件。

泛型

在JDK1.5版本以后出现的,用以解决安全问题,是一个类型的安全机制。
好处:将ClassCastException抛出转移到了编译时期,方便我们解决问题。
格式:通过<类or接口>定义使用集合的数据类型;
泛型使用时期:通常在集合框架使用比较常见。
什么时候定义泛型类呢?
当类中要操作的引用数据类型不太确定时,早期定义Object来完成扩展,ClassCastException可能会在运行时发生,而且要强转。
现在定义泛型类完成扩展。
泛型限定
:通配符
? extends E:可以接受E或者其子类,上限。
? super E:可以接受E或者其父类,下线。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值