集合
6.28
Arraylist 使用迭代器遍历的时候不能操作 目标 (改变集合元素的个数)除非特有方法,迭代器中提供的方法
其他遍历正在进行时也 尽量不要去操作目标,容易出错 java.util.ConcurrentModificationException (并发修改异常)
中途了解 迭代器 原理以及源码
个人解决 使用了 toArray() 转成 数组操作 (也许以后有更好的方法 期待)
6.29
因此 了解到了 并发容器 COW ,
6.30
还有 线程安全的List list = Collections.synchronizedList(new ArrayList());
7.1
了解 Collections (计划)
7.2
在了解 Collections 时候 发现 Comparator 从而转入比较器的了解
了解了排序规则 自然排序 Comparable (接口) 比较器排序 Comparator(自定义接口)
返回的是大小 负数 正数 零
7.3
在使用 list 排序的时候 本人不能解决的问题 从把 list转成 MAP 排序 (arrayList 里面有不同类型的元素要排序时怎么办?)
7.4 转入 了解 MAP
了解 HashMap源码 ,了解了 Entry类 属于静态内部类
7.5 转入 静态内部类的了解
用的不多 所以简单 过了一下
了解 数据结构和算法
个人理解不知道正确与否
hashmap (哈希表是 数组 +链表 然后通过哈希算法 把数组的映射到链表中 也就是 所谓的 键和值)
解决哈希冲突用的 链表法的方式,链表是单向链表(不知道为何选择这种解决方式)
这里有一个需要注意的点 Entry 外围类 entryset();(比如下面的配置文件 无法使用单独的减或者值遍历就要用全视图)
hashset 基于hashmap 只有键
treemap
集合适用场景
对于查找和删除较为频繁,且元素数量较多的应用,Set或Map是更好的选择;
ArrayList适用于通过为位置来读取元素的场景;
LinkedList 适用于要头尾操作或插入指定位置的场景;
Vector 适用于要线程安全的ArrayList的场景;
Stack 适用于线程安全的LIFO场景;
HashSet 适用于对排序没有要求的非重复元素的存放;
TreeSet 适用于要排序的非重复元素的存放;
HashMap 适用于大部分key-value的存取场景;
TreeMap 适用于需排序存放的key-value场景。
数据结构和算法 只有在集合中提现 暂时到这里 等书本《数据结构和算法》到了在看书了解(树) 集合复习到这里 转入IO
7.5
过渡的一个类 Properties IO与集合结合的类 (用来配置文件)
store(); 配置文件的方法
注意; 修改文件信息(setProperty();)时,只是到了集合 必须使用贮存(store) 才能到本地中 否则修改无效
注意的是 如果里面有中文 那么参数就要选择传入字符流(中文) 字符流是相对中文?