Java集合框架

java中的集合框架是非常重要的,日常开发中基本都会用到。

一、java集合框架主要分为Collection接口的子接口和子接口的实现类,以及Map接口的子接口和子接口的实现类、

二、Collection接口:

1.Collection接口定义了size()、isEmpty()、contains(Object o)、iterator()、add(E e)、remove、contains()等方法。

2.Collection接口主要有List接口、Set接口、Queue接口等几个子接口。

3.这几个接口的区别如下:

 

  • List是有序、允许重复的。
  • Set是无序、不允许重复的。
  • Quene是从jdk1.5才开始提供。
  • 顺便提一下Map,Map为键值对存储。

4.List的子类主要有:ArrayList、LinkedList、Vector等。

区别如下:

 

  • ArrayList是基于动态数组结构的List,LinkedList是基于链表结构的List,Vector是线程安全的List,其实现线程安全的方式是基于同步方法来实现的。
  • ArrayList默认初始容量为10,Vector的初始容量也是10,超过此容量,ArrayList扩容当前容量的一半。
  • 对于使用get和set随机访问数据而言,ArrayList速度更快些,原因是LinkedList底层是链表结构,要移动指针
  • 对于新增和删除操作而言,LinkedList速度更快些,因为ArrayList要移动数据。

5.Set的子类主要有HashSet、TreeSet

主要区别如下:

 

  • HashSet是基于hashMap实现的,TreeSet是基于treeMap实现的。
  • HashSet的数据是无序的,允许且只允许有一个值为null,TreeSet的数据是有序的,不允许值为null。
  • HashSet放入的对象必须实现hashCode方法,因为要根据对象的hash值判断是否已存在。

三、Map接口

1.Map接口下的实现类主要有HashMap、LinkedHashMap、TreeMap以及Hashtable、ConcurrentHashMap。

主要区别如下:

 

  • HashMap底层使用的是hash算法,是根据key的hash值判断存储的位置。TreeMap是对对象进行比较进行排序存储。
  • HashTable是线程安全的HashMap,其实现线程安全的方法是在使用同步方法。ConcurrentHashMap是使用同步代码块来确保线程安全。理论上来说,ConcurrentHashMap速度在多线程情况下会比HashTable速度更快些。LinkedHashMap 是对HashMap是HashMap的一个子类,他保存了HashMap中数据的插入顺序。
  • HashMap允许键和值为null,HashTable不允许键和值为null,ConcurrentHashMap也不允许键和值为null。
  • HashMap的初始容量为16,HashTable的初始容量为11.负载因子都是0.75.HashMap在扩容时时为左移,HashTable为左移+1;均在达到容量乘以负载因子的时候进行扩容。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值