java容器

java容器(Container)

1.什么是容器

容器是一个Java 所编写的程序,原先必须自行编写程序以管理对象关系,容器都会自动帮您做好。

2.java中三大容器

Java中的容器类型包括:List、Set和Map

map set list
以键值对的方式存储 键相同时值会被覆盖 不能存放相同的元素 可以存放相同的元素
基于哈希表或者红黑树实现 基于Map实现 基于数组或者链表实现

3.java内置的容器类

Java内部的容器类主要分为两类:Collection(集合)与Map(映射)。

Collection

 set

  HashSet
  •  基于哈希表实现,底层使用HashMap来保存所有元素。
  •  不能保证迭代顺序。
  •  允许使用null元素。
  LinkedHashSet
  •  LinkedHashSet底层使用LinkedHashMap来保存所有元素,它继承于HashSet。
  •  内部使用双向链表维护插入顺序。
  TreeSet
  •  基于(TreeMap)红黑树实现 TreeSet非同步,线程不安全。
  •  TreeSet中的元素支持2种排序方式:自然排序 或者 根据创建TreeSet 时提供的 Comparator 进行排序。

 List

  ArrayList
  •  实现 List 接口、底层使用数组保存所有元素。
  •  相当于动态数组,支持动态扩容。
  •  不同步。
   Vector
  •  Vector可以实现可增长的对象数组。
  •  Vector 实现 List 接口,继承 AbstractList 类,同时还实现 RandmoAccess 接口,Cloneable 接口。
  •  Vector 是线程安全的 LinkedList LinkedList。
  LinkedList
  •  是基于链表实现的。
  •  所以它的插入和删除操作比 ArrayList更加高效。但也是由于其为基于链表的,所以随机访问的效率要比 ArrayList 差。

 Queue

  LinkedList
  •  可以用于实现双向队列。

Map(用于映射(键值对)问题处理)

 HashMap

  • HashMap根据键的HashCode来实现,访问速度较快,遍历顺序并不确定。
  • HashMap最多只允许一条记录的键为null,允许多条记录的值为null。
  • HashMap线程不安全。
  • 确保线程安全,可以用Collections的synchronizedMap方法使HashMap具有线程安全的能力,或者使用ConcurrentHashMap。
  • HashTable

  • HashTable是遗留类,多数功能与HashMap类似,继承自Dictionary类。
  • HashTable是线程安全的。也就是说任意时刻只有一个线程能够写HashTable。
  • HashTable的并发性不如ConcurrentHashMap,因为ConcurrentHashMap引入了分段锁。

  LinkedHashMap

  • 基于哈希表和链表实现,借助双向链表确保迭代顺序是插入的顺序。

 TreeMap

  • 基于红黑树实现 。
  • 默认按照键值得升序进行排序。
  • 在使用TreeMap时,key必须实现Comparable接口或者在构造TreeMap传入自定义的Comparator,
    否则会在运行时抛出java.lang.ClassCastException类型的异常。

4.容器体系图

java容器_第1张图片

你可能感兴趣的:(java基础,链表,容器,java)