Java之collection集合、常见数据结构、List和泛型

目录

  • 集合概述
    • 总结
  • Collection集合的体系特点
    • 总结
  • Collection集合常用API
  • Collection集合的遍历方式
    • 方式一:迭代器
    • 总结
    • 方式二:foreach/增强for循环
    • 方式三:lambda表达式
  • Collection集合存储自定义类型的对象
    • 总结
  • 常见数据结构
    • 数据结构概述、栈、队列
    • 数组
    • 链表
    • 二叉树、二叉查找树
    • 平衡二叉树
    • 红黑树
      • 总结
  • List系列集合
    • List集合特点、特有API
      • 总结
    • List集合的遍历方式小结
    • ArrayList集合的底层原理
    • LinkedList集合的底层原理
  • 集合的并发修改异常问题
  • 泛型深入
    • 泛型的概述和优势
    • 自定义泛型类
    • 自定义泛型方法
    • 自定义泛型接口
    • 泛型通配符、上下限

集合概述

Java之collection集合、常见数据结构、List和泛型_第1张图片
Java之collection集合、常见数据结构、List和泛型_第2张图片
Java之collection集合、常见数据结构、List和泛型_第3张图片
Java之collection集合、常见数据结构、List和泛型_第4张图片

总结

1、数组和集合的元素存储的个数问题。
数组定义后类型确定,长度固定
集合类型可以不固定,大小是可变的。
2、数组和集合存储元素的类型问题。
数组可以存储基本类型和引用类型的数据。
集合只能存储引用数据类型的数据。
3、数组和集合适合的场景
数组适合做数据个数和类型确定的场景。
集合适合做数据个数不确定,且要做增删元素的场景。

Collection集合的体系特点

Java之collection集合、常见数据结构、List和泛型_第5张图片
Java之collection集合、常见数据结构、List和泛型_第6张图片
Java之collection集合、常见数据结构、List和泛型_第7张图片

总结

1、集合的代表是?
Collection接口。
2、Collection集合分了哪2大常用的集合体系?
List系列集合:添加的元素是有序、可重复、有索引。
Set系列集合:添加的元素是无序、不重复、无索引。
3、如何约定集合存储数据的类型,需要注意什么?
集合支持泛型。
集合和泛型不支持基本类型,只支持引用数据类型。

Collection集合常用API

Java之collection集合、常见数据结构、List和泛型_第8张图片

package com.zixin.d1_collection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;

public class CollectionDemo1 {
    public static void main(String[] args) {
        Collection<String> list = new ArrayList<>();

        list.add("java");
        list.add("java");
        list.add("HTML");
        System.out.println(list);

//        list.clear();
//        System.out.println(list);
        System.out.println(list.size());

        System.out.println(list.contains("java"));

        list.remove("java");
        System.out.println(list);

        Object [] arrs = list.toArray();
        System.out.println("数组:"+ Arrays.toString(arrs));


    }
}

Collection集合的遍历方式

方式一:迭代器

Java之collection集合、常见数据结构、List和泛型_第9张图片
Java之collection集合、常见数据结构、List和泛型_第10张图片

总结

1、迭代器的默认位置在哪里。
lterator iterator():得到迭代器对象,默认指向当前集合的索引0
2、迭代器如果取元素越界会出现什么问题。
会出现NoSuchElementException异常。

方式二:foreach/增强for循环

Java之collection集合、常见数据结构、List和泛型_第11张图片
Java之collection集合、常见数据结构、List和泛型_第12张图片

Java之collection集合、常见数据结构、List和泛型_第13张图片

package com.zixin.d3_collection_traversal;

import java.util.ArrayList;
import java.util.Collection;

public class CollectionDemo02 {
    public static void main(String[] args) {
        Collection<String> lists = new ArrayList<>();
        lists.add("赵敏");
        lists.add("小昭");
        lists.add("素素");
        lists.add("灭绝");

        System.out.println(lists);

        for(String ele : lists){
            System.out.println(ele);
        }
    }
}

方式三:lambda表达式

Java之collection集合、常见数据结构、List和泛型_第14张图片

Collection集合存储自定义类型的对象

Java之collection集合、常见数据结构、List和泛型_第15张图片
Java之collection集合、常见数据结构、List和泛型_第16张图片

总结

1、集合中存储的是元素的什么信息?
集合中存储的是元素对象的地址。

常见数据结构

数据结构概述、栈、队列

Java之collection集合、常见数据结构、List和泛型_第17张图片
Java之collection集合、常见数据结构、List和泛型_第18张图片
Java之collection集合、常见数据结构、List和泛型_第19张图片

数组

Java之collection集合、常见数据结构、List和泛型_第20张图片

链表

Java之collection集合、常见数据结构、List和泛型_第21张图片

二叉树、二叉查找树

Java之collection集合、常见数据结构、List和泛型_第22张图片
Java之collection集合、常见数据结构、List和泛型_第23张图片
Java之collection集合、常见数据结构、List和泛型_第24张图片
Java之collection集合、常见数据结构、List和泛型_第25张图片

平衡二叉树

Java之collection集合、常见数据结构、List和泛型_第26张图片
Java之collection集合、常见数据结构、List和泛型_第27张图片
Java之collection集合、常见数据结构、List和泛型_第28张图片
Java之collection集合、常见数据结构、List和泛型_第29张图片
Java之collection集合、常见数据结构、List和泛型_第30张图片

红黑树

Java之collection集合、常见数据结构、List和泛型_第31张图片
Java之collection集合、常见数据结构、List和泛型_第32张图片
Java之collection集合、常见数据结构、List和泛型_第33张图片
Java之collection集合、常见数据结构、List和泛型_第34张图片

总结

Java之collection集合、常见数据结构、List和泛型_第35张图片

List系列集合

List集合特点、特有API

Java之collection集合、常见数据结构、List和泛型_第36张图片

package com.zixin.d5_collection_list;

import java.util.ArrayList;
import java.util.List;

public class ListDemo01 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Java");
        list.add("Java");
        list.add("MySQL");
        list.add("MySQL");

        list.add(2,"HTML");
        System.out.println(list);

        System.out.println(list.remove(2));
        System.out.println(list);

        System.out.println(list.get(2));

        System.out.println(list.set(1,"高斯林"));
        System.out.println(list);
    }
}

总结

1、List系列集合特点
ArrayList、LinekdList :有序,可重复,有索引
2、List的实现类的底层原理
ArrayList底层是基于数组实现的,根据查询元素快,增删相对慢。LinkedList底层基于双链表实现的,查询元素慢,
增删首尾元素是非常快的。

List集合的遍历方式小结

Java之collection集合、常见数据结构、List和泛型_第37张图片

ArrayList集合的底层原理

Java之collection集合、常见数据结构、List和泛型_第38张图片

LinkedList集合的底层原理

Java之collection集合、常见数据结构、List和泛型_第39张图片

package com.zixin.d5_collection_list;

import java.util.LinkedList;

public class ListDemo03 {
    public static void main(String[] args) {
        LinkedList<String> stack = new LinkedList<>();
        stack.push("第一颗子弹");
        stack.addFirst(("第二课子弹"));
        stack.addFirst("第三课子弹");
        stack.addFirst("第四课子弹");

        System.out.println(stack);

        System.out.println(stack.pop());
        System.out.println(stack);

        LinkedList<String> queue = new LinkedList<>();
        queue.addLast("1号");
        queue.addLast("2号");
        queue.addLast("3号");
        queue.addLast("4号");
        System.out.println(queue);

        System.out.println(queue.removeFirst());
        System.out.println(queue);
    }
}

集合的并发修改异常问题

Java之collection集合、常见数据结构、List和泛型_第40张图片

泛型深入

泛型的概述和优势

Java之collection集合、常见数据结构、List和泛型_第41张图片
Java之collection集合、常见数据结构、List和泛型_第42张图片

自定义泛型类

Java之collection集合、常见数据结构、List和泛型_第43张图片
1、泛型类的核心思想;
把出现泛型变量的地方全部替换成传输的真实数据类型
2、泛型类的作用
编译阶段约定操作的数据的类型,类似于集合的作用。

自定义泛型方法

Java之collection集合、常见数据结构、List和泛型_第44张图片
Java之collection集合、常见数据结构、List和泛型_第45张图片

自定义泛型接口

Java之collection集合、常见数据结构、List和泛型_第46张图片

泛型通配符、上下限

Java之collection集合、常见数据结构、List和泛型_第47张图片

你可能感兴趣的:(Java基础,java,数据结构,list)