根据老师上课的讲解及自己课下看的视频总结了一下基本概念。
1.在集合框架产生之前处理对象组的方法:
(1)数组的特点
一维数组:线性的 、长度固定的 、有下标、内存地址连续的[读取速度快]
二维数组:线性的 、长度固定的 、有下标、内存地址连续的[读取速度快]
动态数组 :线性的 、长度可变的 、有下标、内存地址连续的 [查找数据比较快,插入删除比较慢]
链式列表 :线性的 、长度可变的 、内存地址随机的 [插入删除比较快,查找数据比较慢]
(2)系统提供的类:Vector、 Stack 、Properties
缺点:缺乏统一的操作方式,不易扩展。
2.集合框架:java中的集合框架是java.util包中提供的一系列工具,为程序处理对象组提供了标准的方式。其优点是:使性能提高、操作统一、提高了扩展性。诞生自1.2版本。
3.常用的接口及实现类介绍
(1) Collection 表示一组对象,这些对象也称为 collection 的元素。集合指的是Collection: 一组对象的父类,不包含map。但集合框架包括map:存储的是一组成对的数据。
Collection实现的接口有:List,Set,Queue。
Set包括的实现类:HashSet、LinkedList、TreeSet。
List包括的实现类:ArrayList、Vector、LinkedList。
Queue包括的实现类:LinkedList、PriorityQueue。
(2)List:此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
特点:以列表形式存储的集合,允许重复元素。
ArrayList : 动态数组 [内存地址连续]
LinkedList : 链表 [可以作为栈,队列和双端队列使用]
Vector:动态数组 [主要用在多线程中]
【Stack 栈 [先进后出]】
(3)Set:不允许出现相同的元素。
HashSet :通过散列的机制将信息存储到哈希表、且不能保证集合的顺序但其存储速度特别快。
TreeSet [排序集合] :要放入TreeSet中的数据必须是可以排序的。
(4)Queue :[了解]
PriorityQueue 排序队列[优先级队列]
主要方法: 插入数据到队列 add(E e)
移除队列的头 poll()
PriorityBlockingQueue 阻塞队列[同步队列,用在多线程中]
主要方法: 插入数据到队列 add(E e)
移除队列的头 poll()
4.迭代器:用来遍历集合中的元素,通过使用迭代器可以将遍历与数据分离。Iterator方法就是用来遍历集合中的元素对象。
(1)迭代器的使用:while(it.hasNext()){
System.out.println(it.next());
}
(2)for-each遍历集合:使用于所有集合、语法格式简单。
for(String s:set){
System.out.println(s);
}
5. Map接口:表示一组键值对: Map (key,value) ,每一组数据都是一个键值对, 所有的键是一个Set,每一个键对应一个唯一的值,Map的键是不能重复的,值是可重复的。
(1)HashMap:基是于哈希表的 Map 接口的实现。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 注意,此实现不是同步的。
(2)TreeMap:通过树结构来实现Map接口,TreeMap保证了映射按照升序顺序排列key,支持快速查找,且必须保证所传入的key是能够排序的。
1.在集合框架产生之前处理对象组的方法:
(1)数组的特点
一维数组:线性的 、长度固定的 、有下标、内存地址连续的[读取速度快]
二维数组:线性的 、长度固定的 、有下标、内存地址连续的[读取速度快]
动态数组 :线性的 、长度可变的 、有下标、内存地址连续的 [查找数据比较快,插入删除比较慢]
链式列表 :线性的 、长度可变的 、内存地址随机的 [插入删除比较快,查找数据比较慢]
(2)系统提供的类:Vector、 Stack 、Properties
缺点:缺乏统一的操作方式,不易扩展。
2.集合框架:java中的集合框架是java.util包中提供的一系列工具,为程序处理对象组提供了标准的方式。其优点是:使性能提高、操作统一、提高了扩展性。诞生自1.2版本。
3.常用的接口及实现类介绍
(1) Collection 表示一组对象,这些对象也称为 collection 的元素。集合指的是Collection: 一组对象的父类,不包含map。但集合框架包括map:存储的是一组成对的数据。
Collection实现的接口有:List,Set,Queue。
Set包括的实现类:HashSet、LinkedList、TreeSet。
List包括的实现类:ArrayList、Vector、LinkedList。
Queue包括的实现类:LinkedList、PriorityQueue。
(2)List:此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
特点:以列表形式存储的集合,允许重复元素。
ArrayList : 动态数组 [内存地址连续]
LinkedList : 链表 [可以作为栈,队列和双端队列使用]
Vector:动态数组 [主要用在多线程中]
【Stack 栈 [先进后出]】
(3)Set:不允许出现相同的元素。
HashSet :通过散列的机制将信息存储到哈希表、且不能保证集合的顺序但其存储速度特别快。
TreeSet [排序集合] :要放入TreeSet中的数据必须是可以排序的。
(4)Queue :[了解]
PriorityQueue 排序队列[优先级队列]
主要方法: 插入数据到队列 add(E e)
移除队列的头 poll()
PriorityBlockingQueue 阻塞队列[同步队列,用在多线程中]
主要方法: 插入数据到队列 add(E e)
移除队列的头 poll()
4.迭代器:用来遍历集合中的元素,通过使用迭代器可以将遍历与数据分离。Iterator方法就是用来遍历集合中的元素对象。
(1)迭代器的使用:while(it.hasNext()){
System.out.println(it.next());
}
(2)for-each遍历集合:使用于所有集合、语法格式简单。
for(String s:set){
System.out.println(s);
}
5. Map接口:表示一组键值对: Map (key,value) ,每一组数据都是一个键值对, 所有的键是一个Set,每一个键对应一个唯一的值,Map的键是不能重复的,值是可重复的。
(1)HashMap:基是于哈希表的 Map 接口的实现。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 注意,此实现不是同步的。
(2)TreeMap:通过树结构来实现Map接口,TreeMap保证了映射按照升序顺序排列key,支持快速查找,且必须保证所传入的key是能够排序的。