美文网首页
【从零开始学Java】学习笔记day021

【从零开始学Java】学习笔记day021

作者: 蝴蝶的眼睛 | 来源:发表于2020-05-04 21:16 被阅读0次

    一Collection集合

    数组:引用类型,可储存多个元素,长度不可变,可以储存基础数据类型和引用数据类型

    集合:引用类型,可存多个元素,长度可变,只能存储引用数据类型

    集合继承体系

    ArrayList extends List,LinkedList extends List

    HashSet extends Set,LinkedHashSet extends Set

    List extends Collection,Set extends Collection

    Collection常用方法

    public boolean add(E e);增

    public boolean remove(E e);删

    public boolean contains(Object obj);查询是否包含obj

    public boolean isEmpty() :判断是否为空。

    public int size() :获取集合的长度

    public Object[] toArray() :把集合中的元素存储到数组中

    public void clear() :清空

    二Iterator迭代器:通用的从集合中取出元素的方式

    Iterator常用方法

    public boolean hasNext();是否有元素

    public E next();返回集合中下一个元素

    利用Collection内的iterator获取集合的Iterator迭代器

    Iterator<E> iterator();用Iterator<E> 变量接收迭代器

    迭代器使用步骤:

    1 创建集合,加入元素

    2 使用Collection接口中的方法iterator,获取迭代器接口的实现类对象

    3 使用迭代器对象Iterator接口中的方法hasNext和next遍历集合

    迭代器并发修改异常

    在使用迭代器遍历集合的过程中,对集合长度进行了修改,迭代器就会抛出并发修改异常

    ConcurrentModificationException

    解决方案:

            1 遍历集合的同时,不修改集合的长度

            2 Iterator接口有一个子接口叫ListIterator

    在ListIterator接口定义了往集合中添加元素的方法

                    public interface ListIterator<E>extends Iterator<E>

                    void add(E e)  迭代器中往集合添加元素的方法

                    void remove() 删除的是next方法取出的元素

    增强for循环的格式:

            for(集合|数组中元素的类型 变量名 : 集合名|数组名){

                   sout(变量名);

            }

    三泛型

    泛型:可以在类或方法中预知地使用未知的类型。

    定义和使用含有泛型的类:模拟ArrayList集合

    当我们不知道使用什么类型的时候,就可以使用泛型,是一个未知的数据类型

    可以给泛型赋值任意的数据类型:Integer,Student,Person,String...

    定义格式:

            public class 类名<泛型>{

    类中使用数据类型的地方,都可以使用类上定义好的泛型

            }

    什么时候确定类上泛型的数据类型

    创建对象的时候,确定类上泛型的数据类型;对象使用什么类型,类的泛型就是什么类型

    定义和使用含有泛型的方法

    泛型需要定义在方法的修饰符和返回值类型之间

    定义格式:

    修饰符<泛型> 返回值类型 方法名(参数类型-->使用泛型){

    方法体;

            }

    什么时候确定泛型的数据类型:

    调用方法,传递的参数是什么类型,方法的泛型就是什么类型

    含有泛型的接口:第一种使用方式

    定义一个类,实现含有泛型的接口,在实现接口的同时,指定接口泛型的数据类型

    含有泛型的接口:第二种使用方式

    定义类实现含有泛型的接口,接口使用什么泛型,实现类就使用什么泛型

    实现类跟着接口走,就和定义一个含有泛型的类是一样的

    泛型的通配符

            ?:代表可以接收任意的数据类型

            ?已经由java定义好了,我们可以直接使用

    泛型的通配符只能作为方法参数的数据类型使用,不能创建对象作为数据类型使用

    泛型通配符的高级使用

    泛型的通配符: ? 代表可以接收任意数据类型的数据

    泛型的上限限定: ? extends E==>传递的未知类型?只能使用E的子类或者是E本身

    泛型的下限限定: ? super E==>传递的未知类型?只能使用E的父类或者是E本身

    四常见数据结构初识

    stack,又称堆栈,它是运算受限的线性表,其限制是仅允许在标的一端进行插入和删除操作,

    不允许在其他任何位置进行添加、查找、删除等操作。

    队列queue,简称队,它同堆栈一样,也是一种运算受限的线性表,其限制是仅允许在表的一端

    进行插入,而在表的另一端进行取出并删除。

    数组:Array,是有序的元素序列,数组是在内存中开辟一段连续的空间,并在此空间存放元素。查找元素快,增删元素慢

    链表:linked list,由一系列结点node(链表中每一个元素称为结点)组成,结点可以在运行时动态

    生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指

    针域。查找元素慢:想查找某个元素,需要通过连接的节点,依次向后查找指定元素。

    增删元素快

    树具有的特点:

    1. 每一个节点有零个或者多个子节点

    2. 没有父节点的节点称之为根节点,一个树最多有一个根节点。

    3. 每一个非根节点有且只有一个父节点

    二叉树

    如果树中的每个节点的子节点的个数不超过2,那么该树就是一个二叉树。

    红黑树是一种自平衡的二叉查找树,是计算机科学中用到的一种数据结构,它是在1972年由Rudolf

    Bayer发明的,当时被称之为平衡二叉B树,后来,在1978年被Leoj.Guibas和Robert Sedgewick修改为

    如今的"红黑树"。它是一种特殊的二叉查找树,红黑树的每一个节点上都有存储位表示节点的颜色,可

    以是红或者黑;

    红黑树不是高度平衡的,它的平衡是通过"红黑树的特性"进行实现的;

    红黑树的特性:

    1. 每一个节点或是红色的,或者是黑色的。

    2. 根节点必须是黑色

    3. 每个叶节点(Nil)是黑色的;(如果一个节点没有子节点或者父节点,则该节点相应的指针属性值为

    Nil,这些Nil视为叶节点)

    4. 如果某一个节点是红色,那么它的子节点必须是黑色(不能出现两个红色节点相连的情况)

    5. 对每一个节点,从该节点到其所有后代叶节点的简单路径上,均包含相同数目的黑色节点;

    相关文章

      网友评论

          本文标题:【从零开始学Java】学习笔记day021

          本文链接:https://www.haomeiwen.com/subject/skhughtx.html