栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java day12

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java day12

集合容器         数组(Array)有什么缺点

        1. 在创建数组的时候 , 就需要确定数组长度 , 在运行过程中需要判断剩余长度 , 并动态 扩容

        2. 在中间插入的时候 , 需要将后面的元素进行后移

        3. 在中间删除的时候 , 需要将后面的我元素进行前移

        4. 数组中所有元素都是同一种类型(多态可以有多种)

        数组的封装类 - 列表(ArrayList)            数组的特点 : 有序的 , 不唯一的        - 构造方法        先研究如何构造对象

                ArrayList()

                ArrayLisr(int)

        - 成员变量         研究构造出来的对象中有什么

                elementData

                size

        - 成员方法        研究如何操作对象中的成员

                add(int)                 -- 在数组尾部第一个不为空的地方添加

                add(int , E )          --在数组中的指定位置添加

                set(int , E)            --在数组指定位置修改

                remove(int)          --根基索引移除

                remove(Object)   -- 根据指针删除 , 如果存在多个只会移除第一个

                get()                     -- 根据指定的索引号找到某个元素并返回

ArrayList 类中的 " E " 是什么?

        泛型

        用泛型来实现类中用到的数据类型的未知

                --作者在编写的时候位置数据类型

                -- 作者在使用的时候 , 可以给出 " E " 具体的数据类型 , 也可以不给

                如果给出 E 的具体类型 , 实在 构造 ArrayList对象的时候给出

                例如 : E = String , E = Car , E = Dog 

                不给的话 E = Object

                给出 E 的具体数据类型的语法 

                ArrayLIst al1 = new ArrayList();

                ArrayList al2 = new ArrayList();

        可以是参数类型 , 可以是返回值类型 , 可以是任意变量的类型 , 可以是向下转型的类型

        用泛型的好处 , 被调用方当可以

双向链表封装类 - LinkedList

底层 : Node 对象

- 构造方法

- 成员变量

- 成员方法

        -- 增

        1. addFirst(E)        ==在头部添加

        2. addLast(E)        ==在尾部添加

        3. add(E)               ==默认在尾部追加

        4. add(int , E)        ==在指定位置插入 , 

链表在中间插入的速度要优于数组 ,  链表优于数组 , 只需要找到插入的位置的结点 , 然后创建新节点然后修改指针即可 , 

数组在尾部插入很快 , 但是在首部胡哟者中间插入比较慢 , 因为需要后移

        -- 删

        1. removeFirst()        ==删除头部

        2. removeLast()        ==删除尾部

        3. remove(int)           ==删除指定位置

        4. remove(Object)    ==根据指定元素删除

        --改

        set(int , E)

        -- 查

        get(int)        链表并没有索引机制 , 底层通过遍历链表然后通过二分查找法找到指定位置的节点 , 并返回节点中的 item

        从查询角度来看数组的性能远远优于链表

        中间插入和删除 , 链表优于数组

        查询和修改 , 数组优于链表

LinkedList的内部类 - Node 类   (用于创建双向链表中的节点对象)

遍历 ArrayList  和   LinkedList   的几种方式

        1. 普通 for 循环

        2. 增强型 for 循环

        3. forEach循环

        4. 迭代器

Array和ArrayList的区别是什么?

Array是数组,ArrayList是类

Array是定长的( 需要手动扩容),ArrayList长度可变(使用过程中自动扩容)ArrayList的底层是Array

ArrayList和LinkedList的区别是什么?

1.底层数据结构实现: ArrayList底层数据结构是动态数组,而LinkedList的底 层数据结构是双向链表

2.随机访问(即读)效率: ArrayList比LinkedList在随机访问的时候效率要高,因为ArrayList底层 是数组,

可以通过索引号快速访问,LinkedList是通过二 分查找法遍历链表节点进行查找的

3.增加和删除效率:在非首尾的增加和删除操作,LinkedList 要比ArrayList 效率要高,因为ArrayList

增删操作需要大量的前移或后移,这个过程中涉及到大量的赋值操作比较耗时间,LinkedList只需要修改节点对象的左右指针即可。4.内存空间占用: LinkedList比ArrayList 更占内存,因为LinkedList

的节点除了存储数据,还存储了两个引用,一个指向前一-个元素,一个指向后一个元素。

5.综合来说,在需要频繁读取集合中的元素时,更推荐使用ArrayList, 而在插入和删除操作较多时,更推荐使用LinkedList。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1006072.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号