java集合类框架

文章目录

  • collection
    • 1 List
      • 1.1 ArrayList
      • 1.2 LinkedList
      • Vector
  • set
    • HashSet
    • TreeSet
  • Map
    • HashTable (jdk1.0)
    • HashMap
      • TreeMap

collection

面向对象对事物的体现都是以对象的形式,为了方便对多个对象的操作,就对对象进行存储,集合是存储对象最常用的一种方式。

数组和集合都是容器,两者有何差别

  • 数组长度固定,集合长度可变
  • 数组值可以存储对象,也可以存储基本数据类型,集合只能存储对象
  • 数组存储数据类型是固定的,集合存储不固定。

1 List

列表,元素是有序的(角标带索引),可以有重复元素,可以有null

1.1 ArrayList

  1. 底层数据结构是数组数据结构,(数组就是在内存中连续的相同类型的变量空间)
  2. 查询快(因为带角标),增删慢(增删一个元素,所有与角标元素都得改变),线程不同步,默认长度是10,超过长度时,按50%延长集合长度。
  3. 当往ArrayList存入元素要求不重复时,可以根据需要重写元素equal方法

1.2 LinkedList

  1. 底层数据结构是 链表数据结构.
  2. 查询慢,因为每个元素只知道前面一个元素,增删快是因为元素再多,只要让其前后的元素重新相连即可,线程不同步。

Vector

底层是数据接口(JDK1.0在用,已被ArrayList替代)

set

集合,无序(没有索引),元素不可以重复,可以有null

HashSet

  1. 底层数据结构是哈希表
  2. 存取速度快,元素唯一,线程不同步
  3. 保证元素唯一的原理,先判断元素的hashCode值是否相同,再判断两元素的equal方法是否为true,因此往HashSet里面存的自定义元素要复写hashCode和equal方法,以保证元素的唯一性。
  4. hashCode和equals方法虽然定义在自定义对象类里面,但不是我们手动调用,而是往HashSet集合里面存储元素的时候,集合底层自己调用hashCode和equals,它自己拿对象去判断,自己判断两元素是否是同一个元素。

TreeSet

  1. 底层数据结构是二叉树,可以对set集合中的元素进行排序。元素有序,线程不同步
  2. 保证元素唯一性的一句 compareTo方法, return0
    • TreeSet排序第一种方式,让元素自身具备比较性,比如八种基本数据类型或者字符串,当元素自身不具备比较性,比如存储学生对象时,或具备的比较性不是我们想要的,可在集合初始化时,就让集合具备比较性,实现Comparable接口,复写compareTo方法。
    • 第二种方式,集合初始化时,创建一个比较类,传入集合的构造方法里面,实现Comparator接口,并重写compare(T o1, T o2)方法:

Map

顶层接口,存储键值对,键值唯一,跟set很像,set集合底层就是使用了Map集合。
map没有迭代器,要取出元素,必须先将Map集合转换成Set集合,才能遍历元素。

HashTable (jdk1.0)

  1. 底层是哈希表数据结构
  2. 不可以使用null键和null值
  3. 线程同步,效率低

HashMap

  1. 底层是hash表数据结构,
  2. 允许使用null键和null值
  3. 线程不同步,效率高
  4. 保证元素唯一,先判断元素hashCode,再判断equal方法

TreeMap

  1. 底层是二叉树
  2. 允许使用null键和null值
  3. 线程不同步
  4. 可以给map集合中的键进行排序

你可能感兴趣的:(java学习)