学习目标

  • 泛型
    • 泛型的优势
    • 自定义泛型类,接口,方法
  • 数据结构
    • 栈结构
    • 队列结构
    • 数组结构
    • 链表结构
    • 树结构
    • 哈希表结构
  • List集合
    • List集合的特点
    • List集合的实现类
    • List集合的特有方法
  • Set集合
    • Set集合的特点
    • Set集合的实现类
    • Set集合的特有方法

      1. 泛型

      1.1 泛型的能解决什么问题 ?

      泛型是一种类型参数,专门用来保存类型用的。在编译时期会做类型的检查,可以有效避免在运行时类型强转的异常,对于程序员来讲不用额外的类型强转操作,可简化代码。

      2.2 如何使用泛型 ?

      05_JavaSE进阶-数据结构,List&Set - 图1
      注:
  1. 泛型名是一个大写的英文字母,若有多个泛型,用逗号隔开;
  2. 类中定义属性不知具体类型,可使用泛型;
  3. 泛型在运行的时候,就会被擦除。

    2 集合

    2.1 List集合Set集合的区别在于哪里 ?

    | | List集合 | Set集合 | | —- | —- | —- | | 重复对象 | 允许有重复的对象 | 元素唯一 | | null元素 | 可以插入多个null元素 | 只允许插入一个null元素 | | 是否有序 | 输出顺序就是输入顺序 | 无序(存取顺序不一致) | | 有无索引 | 有 | 无 | | 常用实现类 | ArrayList、LinkedList 和 Vector | HashSet、LinkedHashSet 和 TreeSet |

2.2 ArrayList集合特点及使用?

  1. 特点:数据结构(数组结构) 查询快,增删慢。
  2. 使用:

    1. ArrayList<String> list1=new ArrayList<>();
    2. list1.add("曹操");
    3. ArrayList<String> list2=new ArrayList<>();
    4. list1.add("曹洪");
    5. //把list1集合中所以内容添加到list2
    6. list2.addAll(list1);
    7. }

    2.3 HashSet集合特点及使用 ?

  3. 特点:数据结构(哈希表) 查询快,保证元素唯一。1.底层数据结构是哈希表 ;2.对集合的迭代顺序不作任何保证,也就是说不保证存储和取出的元素顺序一致 ;3.没有带索引的方法,所以不能使用普通for循环遍历。

  4. 使用:
    1. HashSet<Student> hs = new HashSet<>();
    2. Student s1 = new Student("刘亦菲","女",18);
    3. hs.add(s1);
    4. for (Student s : hs) {
    5. System.out.println(s);
    6. }

    3. 数据结构

    3.1 常见的数据结构有哪些及特点 ?

  • 结构 : 先进后出。
  • 队列结构 : 先进先出 。
  • 数组结构 : 查询快 , 增删慢 。
  • 链表结构 : 查询慢 , 增删快 。
  • 二叉树
    • 二叉树 : 每个节点最多有两个子节点。
    • 二叉查找树 : 每个节点的左子节点比当前节点小 , 右子节点比当前节点大 。
    • 二叉平衡树 : 在查找树的基础上, 每个节点左右子树的高度不超过1 。
    • 红黑树 :
      • 每一个节点或是红色的,或者是黑色的 ;
      • 根节点必须是黑色 ;
      • 如果一个节点没有子节点或者父节点,则该节点相应的指针属性值为Nil,这些Nil视为叶节点,每个叶节点(Nil)是黑色的 ;
      • 不能出现两个红色节点相连的情况 ;
      • 对每一个节点,从该节点到其所有后代叶节点的简单路径上,均包含相同数目的黑色节点 。
  • 哈希表结构 :
    • 哈希值:是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值;
    • Object类中有一个方法可以获取对象的哈希值;
    • public int hashCode():返回对象的哈希码值。

      4. 当日问题小结
      4.1 当日遇到的问题

      4.2 出现问题原因

      4.3 解决问题方案