Java集合框架

Java集合框架是围绕一组标准接口设计的。Java集合框架主要包括两种类型的容器,一个是集合Collection,用来存储元素集合;另一个是图Map,用来存储key-value映射。

Java集合框架

Collection

Collection的接口有三种子类型,List、Set和Queue。
再下面是一些抽象类,最后是具体实现类,常用的有ArrayList,LinkedList,HashSet,LinkedHashSet,HashMap,LinkedHashMap。

关系与区别

1. ArrayList与HashSet

  • ArrayList有顺序,HashSet无顺序。
    HashSet的具体顺序既不是按照插入顺序,也不是按照hashcode的顺序。同样的HashSet在不同版本下的JVM里也是不一样的。
  • List的数据可以重复,Set的数据不能重复(HashSet其实就是实现了一个只有key的HashMap)
    Set中数据重复的标准是:首先看hashcode是否相同,如果不同,则认为是不同数据;如果hashcode相同,再比较equals,如果equals相同则是相同数据,否则是不同数据。

2. ArrayList和LinkedList的区别

  • ArrayList插入,删除数据慢(数据块存储,插入删除需要移动大面积数据);LinkedList插入,删除数据块(指针连接下一个数据,插入删除只要链接下一个位置就可以)
  • ArrayList是顺序结构,定位很快;LinkedList是链表结构,定位慢。

3. HashMap与HashTable的区别

  • HashMap和HashTable都实现了Map接口
  • HashMap可以存放null(包括指针或值);HashTable不能存放null(指针不能是null,值也不能是null)
  • HashMap不是线程安全的类;HashTable是线程安全的类

4. 几种Set:HashSet,LinkedHashSet,TreeSet (Set都是不重复的)

  • 顺序性:HashSet无序;LinkedHashSet按照插入顺序;TreeSet从小到大排序