java集合框架

来源:互联网 发布:软件试用期过了 编辑:程序博客网 时间:2024/06/05 16:52


与数组的对比:

1、数组的长度固定,集合长度可变;

2、数组只能通过下标访问元素,下标类型只能是数字型,而有的集合可以通过任意类型查找所映射的具体对象。


Collection接口

1、是List、Set和Queue接口的父接口;

2、定义了可用于操作List、Set和Queue的方法——增删改查;

List接口及其实现类——ArrayList

  • List(序列),元素有序,并且可重复;
  • List可以精确控制元素的插入位置,或删除指定位置的元素;
  • ArrayList——数组序列,是List的一个重要实现类;
  • ArrayList底层是由数组实现的
  • ArrayList数组线性表的特点为:类似数组的形式进行存储,因此它的随机访问速度极快。
  • ArrayList数组线性表的缺点为:不适合于在线性表中间需要频繁进行插入和删除操作。因为每次插入和删除都需要移动数组中的元素。

  • ArrayList是线程不安全的,在多线程的情况下不要使用。

  • 如果一定在多线程使用List的,您可以使用Vector,因为Vector和ArrayList基本一致,区别在于Vector中的绝大部分方法都 使用了同步关键字修饰,这样在多线程的情况下不会出现并发错误哦,

泛型集合中,不能添加泛型规定的类型及其子类型以外的对象,否则会报错。

泛型集合中的限定类型,不能使用基本类型,必须用基本类型的包装类


list 接口及其实现类-------linkedlist

      LinkedList的链式线性表的特点为: 适合于在链表中间需要频繁进行插入和删除操作。

                  LinkedList的链式线性表的缺点为: 随机访问速度较慢。查找一个元素需要从头开始一个一个的找。速度你懂的。



总结:a.LinkedList和ArrayList的区别和联系

      ArrayList数组线性表的特点为:类似数组的形式进行存储,因此它的随机访问速度极快。

      ArrayList数组线性表的缺点为:不适合于在线性表中间需要频繁进行插入和删除操作。因为每次插入和删除都需要移动数组中的元素。

 

       LinkedList的链式线性表的特点为: 适合于在链表中间需要频繁进行插入和删除操作。

       LinkedList的链式线性表的缺点为: 随机访问速度较慢。查找一个元素需要从头开始一个一个的找。

           

            注意LinkedList和ArrayList一样也不是线程安全的,如果在对线程下面访问可以自己重写LinkedList

         然后在需要同步的方法上面加上同步关键字synchronized


Set接口及其实现类——HashSet

  • Set(集),元素无序,并且不可以重复,最多允许一个null元素;
  • HashSet——哈希集,是Set的一个重要实现类;
  • 虽然Set中元素没有顺序,但是元素在set中的位置是有由该元素的HashCode决定的,其具体位置其实是固定的。

Map接口

  • Map提供了一种映射关系,元素是以键值对(key-value)的形式存储的,能根据key快速查找value;
  • Map中的键值对以Entry类型的对象实例形式存在;
  • key值不能重复,value值可以重复;
  • key对value是多(一)对一的关系;
  • Map接口提供了返回key值集合、value值集合、Entry值集合,的方法;
  • Map支持泛型,形式如:Map<K,V>

HashMap类

  • HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现;
  • HashMap中的Entry对象是无序排列的;
  • Key值和value值都可以为null,但是一个HashMap只能有一个Key值为null的映射(Key值不可重复);



HashMap与Hashtable的区别:    

       Hashtable实现Map接口,继承自古老的Dictionary类,实现一个key-value的键值映射表。任何非空的(key-value)均可以放     入 其中。

区别主要有三点:

1.      Hashtable是基于陈旧的Dictionary实现的,而HashMap是基于Java1.2引进的Map接口实现的;

2.      Hashtable是线程安全的,而HashMap是非线程安全的,我们可以使用外部同步的方法解决这个问题。

3.      HashMap可以允许你在列表中放一个key值为null的元素,并且可以有任意多value为null,而Hashtable不允许键或者值为null。