Java学习笔记之集合

概述:

List , Set, Map都是接口,前两个继承至Collection接口,Map为独立接口,数组

2,Set下有HashSet,LinkedHashSet,TreeSet安全

3,List下有ArrayList,Vector,LinkedList数据结构

4,Map下有Hashtable,LinkedHashMap,HashMap,TreeMap性能

5,Collection接口下还有个Queue接口,有PriorityQueue类spa

 

 

注意:线程

1,Queue接口与List、Set同一级别,都是继承了Collection接口。code

2,看图你会发现,LinkedList既能够实现Queue接口,也能够实现List接口.只不过呢, LinkedList实现了Queue接口。Queue接口窄化了对LinkedList的方法的访问权限blog

(即在方法中的参数类型若是是Queue时,就彻底只能访问Queue接口所定义的方法 了,而不能直接访问 LinkedList的非Queue的方法),以使得只有恰当的方法才能够使用。继承

3,SortedSet是个接口,它里面的(只有TreeSet这一个实现可用)中的元素必定是有序的。接口

 

Connection接口:

========================================

ArrayList(1)

  • 有序,可重复
  • 初始容量10 加载因子 1 扩容1.5倍
  • 底层数据结构是数组结构(查询快,增删慢)
  • 线程不安全,效率高

 

Vector

  • 有序,可重复
  • 初始容量10 加载因子1 扩容2倍
  • 底层数据结构是数组结构(查询快,增删慢)
  • 线程安全,效率低
  • 如有设置的初始容量使用设置的初始容量

======================================================

HashSet(2)

  • 无序,惟一
  • 初始容量是16(2的n次方) 加载因子0.75 扩容2倍
  • 底层实现是一个HashMap(保存不重复的数据),只是包含HashMap中的key而已,实现Set接口
  • 如有设置初始容量,则使用大于此初始容量的2的幂

TreeSet

  • 有序,惟一
  • 底层结构是TreeMap (红黑树--2叉树中的一种)
  • TreeSet线程不安全,性能不如HashSet
  • 可是有序(天然顺序,不是插入顺序),不可重复
  • 插入元素若是为非基本类型则须要可比性(Comparable、Comparator)

======================================================

 

Map接口:

======================================================
HashMap (3)(无序)

  • 默认初始容量是16(2的n次方) 加载因子0.75 扩容2倍
  • 底层数据结构是   jdk7:数组+链表

                            jdk8: 数组+链表+红黑树

  • 线程不安全,效率高
  • 如有设置初始容量,则使用大于此初始容量的2的幂。
  • 支持key跟value为null
  • 当链表中节点数>=7 && capacity >=64,则将链表变成树结构


HashTable(无序)

  • 默认初始容量为11,加载因子为0.75 扩容2倍+1
  • 底层数据结构是数组+链表
  • 线程安全,效率低
  • 如有设置初始容量,则使用此值。
  • 不支持key跟value为null

TreeMap

  • 底层结构是红黑树(2叉树中的一种) 有序(天然顺序,不是插入顺序)
  • TreeMap线程不安全
  • 插入元素若是为非基本类型则须要可比性(Comparable、Comparator)
  • key不能为null,value能够为null

======================================================

迭代器遍历

 

 1 Set<String>  set = new TreeSet<String> ();  2         set.add("seven1");  3         set.add("seven2");  4         set.add("seven3");  5         set.add("seven4");  6         set.add("seven5");  7 // 遍历  8 // for(String s : set){  9 // System.out.println(s); 10 // } 11 // 迭代器遍历
12         Iterator<String> iterator = set.iterator(); 13         while(iterator.hasNext()){ 14  System.out.println(iterator.next()); 15         }
相关文章
相关标签/搜索