List、Set集合都属于Collection: 单列集合, 一次存储一个对象.
Map一次储存一对
Map: 键值对, 可以通过键对象查找值.
HashMap: 去重复, 效率高
TreeMap: 排序
LinkedHashMap: 保留存储顺序
Hashtable: 和HashMap原理相同, 线程安全, 效率低 . Hashtable中的键和值都不能为null
Properties: 通常用来操作配置文件, Hashtable的子类.
List: 可重复, 可以根据索引操作.
* ArrayList: 数组结构, 查找快
* LinkedList: 链表结构, 增删快
Vector: 数组结构, 线程安全, 效率低
Set: 不可重复, 不能根据索引操作.
* HashSet: 使用哈希算法对元素去重复, 效率高
* TreeSet: 在指定排序算法之后, 以二叉树形式进行存储, 对元素进行排序
LinkedHashSet: HashSet的子类, 原理相同, 但是添加了保留存储顺序的功能
二.集合的迭代
* 1.Collection:
迭代器: 使用iterator()得到Iterator对象, 调用hasNext()和next()方法进行迭代.
增强for循环: JDK5之后, 能用迭代器迭代的类都可以使用增强for循环, 语法为: for (元素类型 变量名 : 容器) { 循环体 }
2.List
除了Collection的2种通用迭代方法, 还可以使用普通for循环, 从0循环到size()-1位置, 每次调用get(int)方法获取一个元素
3.Vector
除了以上3种方式, 还可以使用Enumeration, 通过elements()方法获得对象, 调用hasMoreElements()方法和nextElement()方法进行迭代.
* 4.Map
keySet: 调用keySet()方法获取一个由所有键对象组成的Set集合, 迭代Set集合获取每一个键对象, 再使用键对象获取值对象.
entrySet: 调用entrySet()方法获取一个由所有Entry对象组成的Set集合, 迭代Set集合获取每一个Entry对象, 再通过Entry对象获取键和值。