2,集合的长度是可变的。
3,集合中不可以存储基本数据类型值。
集合容器因为内部的数据结构不同,有多种具体容器。不断的向上抽取,就形成了集合框架。
Collection接口:
List:有序(存入和取出的顺序一致),元素都有索引(角标),元素可以重复。
ArrayList:内部是数组数据结构,是不同步的。替代了Vector。查询的速度快。
LinkedList:内部是链表数据结构,是不同步的。增删元素的速度很快。
Set:元素不能重复,无序。
HashSet: 内部数据结构是哈希表 ,是不同步的。
TreeSet:可以对Set集合中的元素进行排序。是不同步的。
Map接口:
HashMap:部结构是哈希表,不是同步的。允许null作为键,null作为值。
TreeMap : 内部结构是二叉树,不是同步的。可以对Map集合中的键进行排序。
collection与map的区别:
1、Map一次添加一对元素。Collection 一次添加一个元素。
2、Map也称为双列集合,Collection集合称为单列集合。
如何记录每一个容器的结构和所属体系呢?
那就是看名字,如下:
List
ArrayList
LinkedList
Set
HashSet
TreeSet
后缀名就是该集合所属的体系。
前缀名就是该集合的数据结构。
怎么判断什么时候用哪种集合呢?
首先要判断是否需要唯一:
需要:Set,不需要:List。
如果要用Set,再判断是否需要制定顺序:
需要: TreeSet
不需要:HashSet
但是想要一个和存储一致的顺序(有序):LinkedHashSet
如果用List再判断是否需要频繁增删
需要:LinkedList
不需要:ArrayList
看到array:就要想到数组,就要想到查询快,有角标.
看到link:就要想到链表,就要想到增删快,就要想要 add get remove+frist last的方法
看到hash:要想到哈希表,就要想到唯一性,就要想到元素需要覆盖hashcode方法和equals方法。
看到tree:就要想到二叉树,就要想要排序,就要想到两个接口Comparable,Comparator 。
而且通常这些常用的集合容器都是不同步的。
原文:http://blog.csdn.net/zhong1113/article/details/20740429