集合的概念:

Java中集合类是用来存放对象的
集合相当于一个容器,里面包容着一组对象 —— 容器类
其中的每个对象作为集合的一个元素出现
Java API提供的集合类位于java.util包内

Java中数组与集合的比较:

数组也是容器,它是定长的,访问较快,但是数组不会自动扩充
数组可以包含基本数据类型或引用类型的对象,而集合中只能包含引用类型的对象

Java中集合框架层次结构

set_map

 

Collection接口

Set接口和List接口的父类。
Set - 无序的集合;不允许重复(如 HashSet)
List - 有序的集合;允许重复(如 ArrayList、LinkedList)

Set接口

用来包含一组 无序无重复 的对象

  • 无序 — 是指元素存入顺序和集合内存储的顺序不同
  • 无重复 — 两个对象e1和e2,如果e1.equals(e2)返回true,则认为e1和e2重复

Set有两种主要的集合实现类:

  • HashSet — HashSet的特性在于其内部对象的散列存取,即采用哈希技术
  • TreeSet — TreeSet存入的顺序跟存储的顺序不同,但是存储是按照排序存储的

 

List接口

用来包含一组 有序有重复 的对象
List中的元素都对应一个整数型的序号,记载其在容器中的位置,可以根据序号存取容器中的元素
List有两种主要的集合实现类:ArrayList(线性表)和LinkedList(链式表)

ArrayList与LinkedList的比较:

存储结构:
ArrayList是线性顺序存储
LinkedList对象间彼此串连起来的一个链表
操作性能:
ArrayList适合随机查询的场合
LinkedList元素的插入和删除操作性高
从功能上:LinkedList要多一些

Map接口

  • Map内存储的是键/值对这样以成对的对象组(可以把一组对象当成一个元素),通过“键”对象来查询“值”对象
  • Map是不同于Collection的另外一种集合接口
  • Map中,key值是唯一的(不能重复),而key对象是与value对象关联在一起的

HashMap与TreeMap的比较

  1. HashMap基于哈希表实现。TreeMap基于树实现。
  2. HashMap可以通过调优初始容量和负载因子,优化HashMap空间的使用。
    TreeMap没有调优选项,因为该树总处于平衡状态
  3. HashMap性能优于TreeMap。

HashMap与Hashtable的比较

  1. Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。
  2. Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的。
  3. HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。

 


Iterator接口

迭代器,用来方便的实现对容器内的元素进行遍历操作。所有实现了Collection接口的集合类都有一个iterator( )方法,返回一个实现了Iterator接口的对象。Iterator对象实现了统一的一个用来遍历Collection中对象的方法。Iterator是为遍历而设计,能够从集合中取出元素和删除元素,但是没有添加元素的功能。Iterator的功能上比较简单,使用中,只能单向移动

总结

  1. Set内存放的元素不允许重复,List存放的元素有一定的顺序。
  2. Map的应用主要在利用键/值对进行快速查询。
  3. ArrayList和LinkedList的区别在于随机查询性能上ArrayList要好,但LinkedList的中间元素的插入与删除性能好 。
  4. HashSet和TreeSet的区别在于集合内元素是否排序 。
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐