1:常见的数据结构
(1)加钱:数据结构+算法+UML+设计模式 (2)栈,队列,数组,链表 栈:先进后出 队列:先进先出 数组:查询快,增删慢 链表:查询慢,增删快 (3)面试前:百度下常见的数据结构的优缺点。
2:List的三个儿子(理解) (1)List的三个儿子特点:(面试题) List |--ArrayList 底层数据结构是数组,查询快,增删慢 线程不安全,效率高 |--Vector 底层数据结构是数组,查询快,增删慢 线程安全,效率低 |--LinkedList 底层数据结构是链表,查询慢,增删快 线程不安全,效率高
(2)到底使用谁?根据需求看 是否要安全: 是:Vector 否:ArrayList,LinkedList 查询多:ArrayList 增删多:LinkedList 开发中如果要查询快并且线程安全同样用ArrayList,可以用集合工具类将线程同步化。 如果你什么都不知道,用ArrayList。
(3)ArrayList(存储字符串和自定义对象) 重写equqls三个步骤 1. 判断是否为同一个对象 2. 判断是否为该类的对象 3. 向下转型,然后根据需求比较成员变量 (4)Vector(存储字符串和自定义对象) 有自己的特殊功能。 但是不用,被新功能给替代了。
(5)LinkedList(存储字符串和自定义对象) 有自己的特殊功能。可以很方便的操作头和尾。
(6)案例:(今天作业之一) A:ArrayList存储字符串并去除重复值 B:ArrayList存储自定义对象并去除重复值 需求:我们认为同姓名和同年龄的人即为同一个人。 C:用LinkedList模拟栈数据结构
3:泛型(理解) (1)泛型是一种把明确类型的工作放在了创建对象或者调用方法时候才去明确的特殊的类型。 (2)格式: <数据类型> (3)好处:(掌握) A:解决了黄色警告线问题 B:把运行期间的转换异常给提前到了编译期间 C:优化了程序设计,不需要做强制类型转换了
(4)泛型的前世今生 A:泛型类:对象创建的时候才去明确类型 B:泛型方法:方法调用的时候才去明确泛型 C:泛型接口:子类实例化的时候明确类型
(5)泛型的使用:(掌握) 看API中的类或者接口,其后是否跟有<>,如果有,就是泛型的应用。 一般在集合中用。
4:增强for循环(掌握) (1)格式: for(数组或者Collection集合的元素类型 临时变量 :数组或者Collection集合的对象名) { 直接使用变量即可。 } (2)好处: 方便了数组和Collection集合的遍历。 (3)注意(注意): A:增强for是用来替代迭代器的。 B:不要在用增强for遍历集合的时候,用集合对集合本身进行修改。 (遍历list集合可以用集合删除倒数第二个元素,遍历set集合可以用集合删除最后一个元素) (4)遍历集合三种方式 迭代器 普通for+get(只有list集合才可以,有索引) 增强for(工作时候用)
|