一、 | 常见的数据结构 |
栈 | 先进后出 |
队列 | 先进先出 |
数组 | 查询快、增删慢 |
链表 | 查询慢、增删快 |
二、List的三个儿子 | ArrayList、Vector、LinkedList |
ArrayList:
底层数据结构是数组,查询快、增删慢。
线程不安全,效率高。
存储字符串和自定义对象:需要重写equals。
A:判断是否为同一个对象
if(this==obj){return true;}
B : 判断是否为该类的对象
if(!(obj instanceOf Student)){return false;}
C:向下转型,然后根据需求比较成员变量
Student s =(Student)obj;
return this.name.equals(s.name) && this.age == s.age;
遍历:迭代器、增强For、普通For+get
Vector:
底层数据结构是数组,查询快、增删慢。
线程安全,效率低。
LinkedList:
底层数据结构是链表,查询慢,增删快。
线程不安全、效率高。
LinkedList模拟栈数据结构(先进后出)
LinkedList<Object>ll
定义public void add(Object obj){ll.addFirst()}
定义public Object get(int i){ll.get(i)}
定义public int size(){return ll.size()}
使用:
是否安全?
Y:Vector
N:ArrayList、LinkedList——查询多:ArrayList(不知道也用)
增删多:LinkedList
三、泛型 | 一种把明确类型的工作放在了创建对象或者调用方法时候去明确的特殊类型 |
格式:<格式类型>
优点:
A,解决了黄色警告线问题;
B,把运行期间的转换异常给提前到了编译时期;
C,优化了程序设计,不需要做强制类型转换了。
泛型的使用:看API的;类或者接口,其后是否跟着<>,如果有,就是泛型的应用。一般在集合中用。
四、增强For循环 |
|
格式:
for(数组或者Collection集合的元素类型 变量:数组或者Collection集合的对象){
直接使用变量即可
}
优点:方便了数组和Collection集合的遍历。
注意:
A,不要在增强for循环遍历集合的时候,用集合对集合本身进行修改
B,增强for循环是用来代替迭代器的。