JavaSE:集合

Java中与集合相关的接口和类被组织在以Collection和Map接口为根的层次结构中,称为集合框架。从体系上讲,集合类型分为列表(List)、集(Set)和映射(Map)三种。Collection的子接口主要是List和Set,Map是与collection并列的一个接口。另外在集合框架中提供了一个重要的工具类Collections,该工具仅提供了很多静态方法,用于方便操作集合。

  List集合  

一、特性:

1、有序、可重复

2、可存储null值

二、分类

1、ArrayList

(1)基于数组结构;

(2)默认初始容量是10;

(3)可存储null值;

2、LinkedList

(1)底层是双向链表结构(单向链表是指每个节点含有一个数据和下一个节点的引用;双向链表是指每个节点含有一个数据以及上一个节点的引用和下一个节点的引用);

(2)擅长于处理对列表结构的开始和结束处有频繁地添加和删除操作的需求;

(3)通常利用LinkedList对象来表示一个堆栈或队列;

3、Vector

(1)对应数据结构中的向量,即向量列表;

(2)默认初始容量是10;

(3)可存储不同类型的元素;

(4)容量增量默认是0,即每次需要增大容量时,向量的容量将增大一倍;

4、Stack

(1)对应数据结构中的堆栈,即堆栈列表;

(2)堆栈是以“先进后出”或“后进先出”的方式存储和操作数据,即只能在栈顶操作数据;

(3)注意入栈和出栈的概念;

(4)Stack类继承了Vector类;

  Set集合  

一、特性:

1、无序、不可重复

二、分类

1、HashSet

(1)底层使用了Hash表,所以执行速度很快;

(2)无序、不可重复;

(3)默认初始容量是11,加载因子是0.75,即表示当集合使用了75%时需要扩充;

(4)可存储null元素,但只能有一个;

(5)若要求元素有序,可使用其子类LinkedHashSet;

2、TreeSet

(1)具有排序功能(在添加元素时,TreeSet会按照某种规则将其插入到合适的位置,以保证它里面的元素时刻按照升序排列);

(2)只能存储可排序的元素,否则会抛出ClassCastException异常(要想实现某类对象的排序,该类在定义时必须实现Comparable接口,并重写该接口中的compareTo()方法);

(3)这里的排序不是指添加顺序,与List不同。比如存储的元素是String或Integer类型,则会按照自然排序存放;

(4)无法指定初始容量,它在每次添加和删除操作时会自动扩充和缩小;

  Map集合  

一、特性:

1、无序、键不可重复

2、键值可为null,但只能有一个

二、分类

1、HashMap

(1)基于Hash表;

(2)默认初始容量是16,加载因子是0.75(注意:只有基于Hash表的集合创建时才需要指定初始容量和加载因子,比如HashSet);

(3)若要求元素有序,可使用其子类LinkedHashMap;

2、TreeMap

(1)具有排序功能(排序的是键),同TreeSet;

(2)要么存储可排序的键元素,即元素要实现Comparable接口,要么在构造函数中传入比较器Comparator类的对象,否则会运行时报错(注意:是指键元素,不是值元素);

(3)无法指定初始容量和加载因子,同TreeSet;

(4)这里的排序也不是指添加顺序,参考TreeSet;

  经典代码  

一、创建线程安全的集合对象

List<Object> attributesList = Collections.synchronizedList(new ArrayList<>());
attributesList.add(new String("土豆"));
        
Set<Object> attributesSet = Collections.synchronizedSet(new HashSet<>());
attributesSet.add(new String("土豆"));
        
Map<Object, Object> attributesMap = Collections.synchronizedMap(new HashMap<>());
attributesMap.put("potato", new String("土豆"));

 

posted @ 2017-12-22 11:55  cuckoo20100401  阅读(118)  评论(0)    收藏  举报