黑马程序员技术交流社区
标题:
Day15课堂笔记
[打印本页]
作者:
张海旭
时间:
2015-5-29 22:07
标题:
Day15课堂笔记
1.回顾
Date类
构造方法:
Date()
Date(long time)
方法:
long getTime()
void setTime(long time)
SimpleDateFormat类
格式化日期 或者 解析字符串(必须是日期格式的)
SimpleDateFormat sdf = new SimpleDateFormat("模式");
String --> Date
sdf.parse(String str)
Date --> String
sdf.format(Date d)
Calendar 类
get(int filed)
set()
add(int filed, int in) -- 对指定的字段做增加或减少的操作。
对象数组
存储引用类型数据的数组。
2. 数组与集合的比较
数组特点:
1)长度固定
2)可以存储基本和引用类型
3)类型必须是一致的
集合特点:
1)长度可变
2)仅可以存储引用类型
3)集合存储的引用类型可以是不同类型的
3.集合体系的学习方法
学顶层 -- 共性内容
用底层 -- 具体实现
单列集合体系:
Collection(单列集合顶层接口)
List
ArrayList
Vector
LinkedList
Set
HashSet
TreeSet
4.Collection接口的功能
添加:
boolean add(Object obj) -- 添加一个元素,返回添加是否成功
boolean addAll(Collection c) -- 添加一个集合的元素, 返回值表示调用方法的集合是否发生改变
删除:
void clear() -- 清除集合中所有元素
boolean remove(Object obj) -- 移除指定元素,返回是否移除成功
boolean removeAll(Collection c) -- 移除一个集合的元素, 返回值表示调用方法的集合是否发生改变
判断:
boolean isEmpty() -- 空集合
boolean contains(Object obj) -- 判断是否包含指定元素
boolean containsAll(Collection c) -- 是否包含指定的集合中的所有元素 全部包含才返回true
长度:
int size() -- 集合的长度
交集:
boolean retainAll(Collection c) -- 交集
A对B做交集。B不改变,A保存两个集合的交集部分。
返回值表示A是否发生改变
转数组:
Object[] toArray()
迭代器
Iterator iterator() -- 获取迭代器
获取字符串、数组、集合的长度:
字符串:length()
数组: length属性
集合:size()
5. 迭代器的实现原理
Iterator接口:
不同的集合,数据结构不一样,那么数据的存储和获取方式就不一样。
也就是说迭代器获取不同集合中的数据的方式是变化的,所以定义为实现类不合适。
但迭代器遍历集合,肯定都要有判断是否有元素,以及获取元素的功能。
那么就把这些功能抽取出来,定义到接口中。
具体的实现类又是以内部类的方式实现的。
又因为集合的数据结构,集合本身最清楚。所以针对不同的集合,迭代器以内部类的方式实现。
通过调用集合的方法,返回可以操作该集合的迭代器。
6. List体系
List
元素有序(存储和取出的顺序),可重复
Set
元素无序,唯一
List体系特有功能
添加:
void add(int index, Object obj)
在列表的指定位置插入指定元素
删除:
Object remove(int index)
删除指定索引处的元素,返回被删除的元素
修改:
Object set(int index, Object obj)
用指定元素替换列表中指定位置的元素,返回被替代的元素
获取:
Object get(int index) -- 获取指定索引出的元素
int indexOf(Object obj) -- 获取指定元素在集合中第一次出现的索引
ListIterator -- 列表迭代器
截取:
List subList(int fromIndex, int toIndex)
截取列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分
异常:
ConcurrentModificationException 并发修改异常
产生原因:通过迭代器遍历集合的时候,又通过集合改变了集合的结构
因为迭代器是通过集合获得的,而增加元素以后,集合改变了,但迭代器没有改变。
这种情况就是不允许的。
解决方案:
1)全部通过集合来操作:使用普通for循环,这时候元素添加到最后。
2)全部通过List体系特有的迭代器实现:ListIterator。这时元素添加到遍历到的那个元素后面。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2