讲师笔记,Java基础学习之路之day18——List接口实现类
List接口的实现类:ArrayList LinkedList Vector Stack
ArrayList 和 Vector 的异同:
相同:底层都是利用数组的原理来实现
不同:
ArrayList线程不安全,效率更高
Vector线程安全
Stack 先进后出
LinkedList
数据结构是双向链表
ArrayList 和 LinkedList的区别:
数据结构:
ArrayList是采用线性表实现的
LinkedList是采用链表实现的
操纵性能:
ArrayList适合做查询功能,性能更优
LinkedList做插入和删除的操作性能更优
------------------------------------------------
Set接口的实现类 :HashSet TreeSet
set的遍历方式:
1. 在jdk1.5之后出现了一种for循环,增强for 或者 foreach
for(你要遍历的集合或者数组类型 a:要遍历的数组或者集合){
//a表示每次遍历的元素
}
当类实现了Iterable接口的时候,可以使用foreach循环进行遍历
interface Iterable<T>{
Iterator<T> iterator();
}
如果能用iterator()进行遍历,一定能用foreach进行遍历
2. iterator迭代器的作用:对集合进行遍历
常用方法:
next(): 返回当前位置的元素并将指针移动到下一个元素
hasNext():判断当前位置是否有元素
remove():删除迭代器返回的最后一个元素
注意:
如果使用iterator在迭代过程中,一次循环中只能删除一个元素
要删除元素 ,必须使用iterator的remove方法 不能使用集合的remove方法
否则会报错:ConcurrentModificationException
HashSet
对应的数据结构是哈希散列表
equals() hashCode() 结果
true true f1和f2认为是重复元素
true false f1和f2不重复
false true f1和f2不重复
false false f1和f2不重复
如何判断元素重复的流程:
1. 通过调用待添加对象的hashCode方法 得到hash值
2. 通过hash值 经过算法 得到待添加对象在hash表中的位置
3. 如果当前位置没有元素,立即放入
4. 如果当前位置有元素,调用待添加对象的equals或者==(和当前位置的已有元素进行比较)
5. equals或者== 结果为true 当前待添加对象被舍去
6. equals或者== 结果为false,将当前待添加对象追加到当前位置 以链表的形式
使用HashSet<T> 需要重写T的hashCode和equals方法
-------------------------------------------
作业:
用HashSet实现用户管理系统,改写dao层
重写hashCode :根据id生成hash值
重写equals:根据id是否相同 来判断是否为同一对象
- 讲师笔记,Java基础学习之路之day20——Collection,Collections,IO流
- 讲师笔记,Java基础学习之路之day21——IO流的方法
- 讲师笔记,Java基础学习之路之day29——代理模式,模板模式
- 讲师笔记,Java基础学习之路之day22——打印流,随机流,Properties
- Java学习笔记_23_List接口实现类
- Java基础学习笔记(七)Set接口及其实现子类
- Java集合源码学习(5)_List接口的基础实现AbstractList
- Java基础学习笔记(七)Set接口及其实现子类
- 【Java学习笔记】基础知识学习12【Set接口的实现类】
- Java基础学习笔记(八)List接口
- JAVA学习笔记Day25——动态接口的实现
- 【Java学习笔记】32:List接口及其实现类
- Java基础学习笔记(九)Comparable接口、Map接口、泛型
- java学习笔记—自定义实现linkedList集合
- 【Java学习笔记】Comparable接口的实现和使用
- Java基础学习笔记之七(2)--List&Set
- JSP基础实例_Java动态实现课程表_学习笔记
- java学习笔记--类ArrayList和LinkedList的实现
- [Java学习笔记] List 接口下的ArrayList类
- Java学习笔记——接口的多实现技术