一.框架概述
Java 集合可分为Collection
和Map
两种体系
- Java 容器分为 Collection 和 Map 两大类,Collection集合的子接口有Set、List、Queue三种子接 口。我们比较常用的是Set、List,Map接口不是collection的子接口。
-
Collection 集合主要有 List 和 Set 两大接口
-
List :一个有序(元素存入集合的顺序和取出的顺序一致)容器,元素可以重复,可以插入多个 null 元素,元素都有索引。常用的实现类有 ArrayList 、 LinkedList 和 Vector 。
- Set:一个无序(存入和取出顺序有可能不一致)容器,不可以存储重复元素,只允许存入一个null元素,必须保证元素唯一性。Set 接口常用实现类是 HashSet、LinkedHashSet 以及TreeSet。
-
-
Map 是一个键值对集合,存储键、值和之间的映射。 Key 无序,唯一; value 不要求有序,允许重复。 Map 没有继承于 Collection 接口,从 Map 集合中检索元素时,只要给出键对象,就会返回对应的值对象。
-
Map 的常用实现类: HashMap 、 TreeMap 、 HashTable 、 LinkedHashMap 、ConcurrentHashMap
-
二.迭代器遍历
- ilterator对象成为迭代器,主要用于Collection集合中的元素。
- 所有实现Collection接口的集合都有一个ilterator()方法,用以返回一个迭代器。
- ilterator仅用于遍历集合,其本身不存放任何对象。
迭代器 it 的两个基本操作是 next 、hasNext 和 remove。
调用 it.next() 会返回迭代器的下一个元素,并且更新迭代器的状态。
调用 it.hasNext() 用于检测集合中是否还有元素。
调用 it.remove() 将迭代器返回的元素删除。
public class RunoobTest {
public static void main(String[] args) {
// 创建集合
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("Runoob");
sites.add("Taobao");
sites.add("Zhihu");
// 获取迭代器
Iterator<String> it = sites.iterator();
// 输出集合中的第一个元素
System.out.println(it.next());
}
}
三.集合选择规则
在开发中,选择什么集合实现类,主要取决于业务操作特点,然后根据集合实现类特征进行选择,分析如下:
- 先判断存储的类型(一组对象[单列]或一组键值对[双列])
- 一组对象[单列]:Collecton接口
- 允许重复:List
- 增删多:LinkedLIst [底层维护了一个双向链表]
- 改查多:ArrayList [底层维护 Object 类型的可变数组]
- 不允许重复
- 无序:HashSet [底层是HashMap , 维护了一个哈希表 即 (数组 + 链表 + 红黑树 )]
- 排序TreeSet [底层是TreeMap,不可添加重复元素]
- 插入和取出顺序一致:LinkedHashSet , 维护数组 + 双向链表
- 允许重复:List
- 一组键值对[双列]:Map
- 键无序:HashMap [底层是:哈希表 jdk 7:数组 + 链表 ,jdk 8 :数组 + 链表 + 红黑树]
- 键排序:TreeMap []
- 键插入和取出顺序一致:LinkedHashMap
- 读取文件 Properties