java collection

在 Java2中,有一套设计优良的接口和类组成了Java集合框架Collection,使程序员操做成批的数据或对象元素极为方便。这些接口和类有不少对抽象数据类型操做的API,而这是咱们经常使用的且在数据结构中熟知的。例如Map,Set,List等。而且Java用面向对象的设计对这些数据结构和算法进行了封装,这就极大的减化了程序员编程时的负担。程序员也能够以这个集合框架为基础,定义更高级别的数据抽象,好比栈、队列和线程安全的集合等,从而知足本身的须要。 

Java2的集合框架,抽其核心,主要有三种:List、Set和Map。以下图所示: java


java_Collection_介绍

须要注意的是,这里的 Collection、List、Set和Map都是接口(Interface),不是具体的类实现。 List lst = new ArrayList(); 这是咱们日常常常使用的建立一个新的List的语句,在这里, List是接口,ArrayList才是具体的类。 

经常使用集合类的继承结构以下: 
Collection<--List<--Vector 
Collection<--List<--ArrayList 
Collection<--List<--LinkedList 
Collection<--Set<--HashSet 
Collection<--Set<--HashSet<--LinkedHashSet 
Collection<--Set<--SortedSet<--TreeSet 
Map<--SortedMap<--TreeMap 
Map<--HashMap 

程序员

Set:不能包含重复的元素。算法

List:是一个有序的集合,能够包含重复的元素。提供了按索引访问的方式。编程

Map:包含了 key-value 对。Map 不能包含重复的 key。安全

 

List总结: 数据结构

  • 全部的List中只能容纳单个不一样类型的对象组成的表,而不是Key-Value键值对。例如:[ tom,1,c ]
  • 全部的List中能够有相同的元素,例如Vector中能够有 [ tom,koo,too,koo ]
  • 全部的List中能够有null元素,例如[ tom,null,1 ]
  • 基于Array的List(Vector,ArrayList)适合查询,而LinkedList 适合添加,删除操做

Set总结: 框架

  • Set实现的基础是Map(HashMap)
  • Set中的元素是不能重复的,若是使用add(Object obj)方法添加已经存在的对象,则会覆盖前面的对象

Map: 
Map 是一种把键对象和值对象进行关联的容器,而一个值对象又能够是一个Map,依次类推,这样就可造成一个多级映射。Map有两种比较经常使用的实现:HashMap和TreeMap。 数据结构和算法

键和值的关联很简单,用put(Object key,Object value)方法便可将一个键与一个值对象相关联。用get(Object key)可获得与此key对象所对应的值对象。 线程