大数据之路week01--day02_2 集合方面的总结

(初稿 太晚了,明天再进行补充)

1、对象数组(掌握)

  (1)数组既可以存储基本数据类型,也可以存储引用类型。它存储引用类型的时候的数组就叫对象数组。

  (2)案例:

    用数组存储5个学生对象,并遍历数组。

 1 package day02;
 2 
 3 /** 
 4 * @author WYH
 5 * @version 2019年11月12日 下午10:28:33
 6 */
 7 public class test {
 8     public static void main(String[] args) {
 9         Students[] s = new Students[2];
10         
11         Students s1 = new Students("xiao",21);
12         Students s2 = new Students("da",22);
13         
14         s[0] = s1;
15         s[1] = s2;
16         
17         for(int i = 0;i<s.length;i++) {
18             System.out.println(s[i]);
19         }
20         
21         
22     }
23 
24 }

2、集合(Collection)(掌握)

  (1)集合的由来?

    我们学习的时Java -- 面向对象 --操作很多对象 --存储 -- 容器(数组和StringBuffer)-- 数组而数组得长度固定,所以不适合做变化得需求,Java就提供了集合供我们使用。

  (2)集合和数组得区别?

    A: 长度区别

      数组固定

      集合可变

    B: 内容区别

      数组可以是基本类型,也可以是引用类型

      集合只能是引用类型

    C: 元素内容

      数组只能存储同一种类型

      集合可以存储不同类型(其实集合一般存储得也是同一种类型)

  (3)集合的继承体系结构?

      由于需求不同,Java就提供了不同得集合类,而这多个集合类得数据结构不同,但是他们都是要提供存储和遍历功能得容器,我们把他们得共性不断向上提取,

最终就形成了集合得继承体系结构。

  Collection

    |--List

      |--ArrayList

      |--Vector

      |--LinkList

    |--Set

      |--HashSet

      |--TreeSet

  (4)Collection得功能概述(自己补齐)

    A: 添加功能

    B:删除功能

    C: 判断功能

    D: 获取功能

    E: 长度功能

    F: 交集(了解)

    G: 把集合转数组(了解)

  (5)Collection集合得遍历

    A: 把集合转数组(了解)

    (代码补充)

    B: 迭代器(集合专用方式)

              (代码补充)

  (6)迭代器

    A: 是集合得获取元素得方式

    B: 是依赖于集合而存在得

    C:迭代器得原理和源码

      a:为什么定义为了一个接口而不是一个实现类(如果是实现类,那么就要提供具体得实现方法,但是我们的集合有很多种,所以是一个接口)

      b: 看了看迭代器的内部类实现

  (7)Collecton集合的案例(遍历方式 迭代器)

    集合的操作步骤:

      A: 创建集合对象

      B: 创建元素对象

      C: 把元素添加带集合

      D: 遍历集合

    A: 存储字符串并遍历

    (代码补充)

    B: 存储自定义对象并遍历

    (代码补充)

2、集合(List)(掌握)

  (1)List是Collection的子接口

    特点:有序(存储顺序和取出顺序一致),可重复。

  (2)List的特有功能:(自己补齐)

    A: 添加功能

    B: 删除功能

    C: 获取功能

    D: 迭代器功能

    E: 修改功能

  (3)List集合的特有遍历功能

    A: 由size()和get()结合。

    B: 代码演示

    (代码补充)(一种迭代器,一种for循环)

  (4)列表迭代器的特有功能:(了解)

    可以逆向遍历,但是要先正向遍历,所以毫无意义,基本不会使用。

  (5)并发修改异常

    A: 出现的异常

      迭代器遍历集合,集合修改集合元素

    B: 原因

      迭代器是依赖集合二点,而集合的改变,迭代器并不知道。

    C: 解决方案

      a: 迭代器遍历,迭代器修改(ListIterator)

        元素添加在刚刚迭代器的位置

        (代码补充

      b: 集合遍历,集合修改(size()和get())

        元素添加在集合的末尾

        (代码补充)

  (6)常见数据结构

    A: 栈 先进后出

    B: 队列 先进先出

    C: 数组 查询快,增删慢

    D: 链表 查询吗,慢,增删快

  (7)List的子类特点(面试题)

    ArrayList

      底层数据结构是数组,查询快,增删慢。

      线程不安全,效率高。

    Vector

      底层数据结构是数组,查询快,增删慢。

      线程安全,效率低。

    LinkedList

      底层数据结构是链表,查询慢,增删快。

      线程不安全,效率高。

    到底使用谁呢?看需求?

    分析:

      要安全吗?

        要:Vector(即使要,也不适用这个,后面再说)

        不要:ArrayLIst或者LinkedList

          查询多:ArrayList

          增删多:LinkedList

      都不知道选啥的时候,选ArrayList。

 

猜你喜欢

转载自www.cnblogs.com/wyh-study/p/11846177.html