Java基础|Java基础 - LinkedList,泛型(接口,通配符),增强for,静态导入,可变参数,集合嵌套

转载请注明出处:https://www.jianshu.com/p/64b622a12415 1.集合框架(去除ArrayList中重复自定义对象元素(掌握)

  • A:案例演示
    • 需求:ArrayList去除集合中自定义对象元素的重复值(对象的成员变量值相同)
  • B:注意事项
    • 重写equals()方法的
      contains方法底层用equals方法进行判断,要判断值相等,就要重写equals方法
      remove方法底层也是依赖于equals方法(没重写equals方法前比较的是地址值)
2.LinkedList的特有功能(掌握)
  • A:LinkedList类概述
  • B:LinkedList类特有功能
    • public void addFirst(E e)及addLast(E e)
    • public E getFirst()及getLast()
    • public E removeFirst()及public E removeLast()
    • public E get(int index);
3.栈和队列数据结构(掌握)
    • 先进后出 (LIFO表)(Last In First Out)
  • 队列
    • 先进先出(FIFO表) (First In First Out)
4.泛型概述和基本使用(掌握)
  • A:泛型概述
  • B:泛型好处
    • 提高安全性(将运行期的错误转换到编译期)
    • 省去强转的麻烦
  • C:泛型基本使用
    • <>中放的必须是引用数据类型
  • D:泛型使用注意事项
    • 前后的泛型必须一致,或者后面的泛型可以省略不写(1.7的新特性菱形泛型)
【Java基础|Java基础 - LinkedList,泛型(接口,通配符),增强for,静态导入,可变参数,集合嵌套】补充:泛型擦除
查看下述两个方法:
public void show(ArrayList list) {}
public void show(ArrayList list){}
* 上述两个方法是不会形成方法的重载的,会报方法已存在的错误。 原因:泛型擦除
* 泛型是1.5中引入的一个新的概念,由于不用进行强制转换类型了,所以具有较高的安全性和易用性。
* 因为泛型其实只是在编译器中实现的而虚拟机并不认识泛型
  • ,所以要在虚拟机中将泛型类型进行擦除。也就是说,在编译阶段使用泛型,运行阶段取消泛型,即擦除。
    • 擦除是将泛型类型以其父类代替,如String变成了Object等。
    • 其实在使用的时候还是进行带强制类型的转化,只不过这是比较安全的转换,因为在编译阶段已经确保了数据的一致性。
5.ArrayList存储字符串和自定义对象并遍历泛型版(掌握)
  • A:案例演示
    • ArrayList存储字符串并遍历泛型版
6.泛型的由来(了解)
  • A:案例演示
    • 泛型的由来:通过Object转型问题引入
    • 早期的Object类型可以接收任意的对象类型,但是在实际的使用中,会有类型转换的问题。也就存在这隐患,所以Java提供了泛型来解决这个安全问题。
7.泛型的由来(了解)
  • A:案例演示
    • 泛型的由来:通过Object转型问题引入
    • 早期的Object类型可以接收任意的对象类型,但是在实际的使用中,会有类型转换的问题。也就存在这隐患,所以Java提供了泛型来解决这个安全问题。
8.泛型方法的概述和使用(了解)
  • A:泛型方法概述
    • 把泛型定义在方法上
  • B:定义格式
    • public <泛型类型> 返回类型 方法名(泛型类型 变量名)
  • C:案例演示
    • 泛型方法的使用
9.泛型接口的概述和使用(了解)
  • A:泛型接口概述
    • 把泛型定义在接口上
  • B:定义格式
    • public interface 接口名<泛型类型>
  • C:案例演示
    • 泛型接口的使用
10.泛型高级之通配符(了解)
  • A:泛型通配符
    • 任意类型,如果没有明确,那么就是Object以及任意的Java类了
  • B:? extends E
    • 向下限定,E及其子类
  • C:? super E
    • 向上限定,E及其父类
11.增强for的概述和使用(掌握)
  • A:增强for概述
    • 简化数组和Collection集合的遍历
  • B:格式:
  • for(元素数据类型 变量 : 数组或者Collection集合) { 使用变量即可,该变量就是元素 }

  • C:案例演示
    • 数组,集合存储元素用增强for遍历
  • D:好处
    • 简化遍历
12.三种迭代的能否删除(掌握)
  • 普通for循环,可以删除,但是索引要--
  • 迭代器,可以删除,但是必须使用迭代器自身的remove方法,否则会出现并发修改异常
  • 增强for循环不能删除
13.静态导入的概述和使用(掌握)
  • A:静态导入概述
  • B:格式:
    • import static 包名….类名.方法名;
    • 可以直接导入到方法的级别
  • C:注意事项
    • 方法必须是静态的,如果有多个同名的静态方法,容易不知道使用谁?这个时候要使用,必须加前缀。由此可见,意义不大,所以一般不用,但是要能看懂。
14.可变参数的概述和使用(掌握)
  • A:可变参数概述
    • 定义方法的时候不知道该定义多少个参数
  • B:格式
    • 修饰符 返回值类型 方法名(数据类型… 变量名){}
  • C:注意事项:
    • 这里的变量其实是一个数组
    • 如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个
15.Arrays工具类的asList()方法的使用(掌握)
  • A:案例演示
    • Arrays工具类的asList()方法的使用
    • Collection中toArray(T[] a)泛型版的集合转数组
16.集合嵌套之ArrayList嵌套ArrayList(掌握)
  • A:案例演示
    • 集合嵌套之ArrayList嵌套ArrayList

    推荐阅读