Java Date7.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。
三、你知道几种遍历ArrayList的方式

  1. 普通for循环
  2. 增强型for循环
  3. forEach循环
  4. 迭代器

 

四、整理ArrayList和LinkedList的常用方法(方法名、参数说明、返回值说明、方法功能说明)

方法名参数说明返回值说明方法功能说明
add(E e)泛型boolean将指定元素追加到列表的末尾
ArrayList

add(Object element)

向ArrayList数组中添加元素

size()

无参return size返回数组中元素个数

get(int index)

int泛型返回数组中对应位置的元素

add(int intex,object element)

在数组指定位置添加元素,原数组从指定位置开始的元素全部后移
set(int i,Object element)将索引i对应位置的元素替换为element并返回被替换的元素
LinkedListadd(Frist)在链表开头插入指定的元素
add(Last)在链表末尾插入指定元素
add(int index,E element)在指定位置插入有一个元素

集合容器

一、数组(Array)有什么缺点?

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

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

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

二、数组的封装类-列表 (ArrayList);底层是object类数组

数组的特点:有序不唯一

构造方法 先研究如何构造对象

ArrayList ()

ArrayList(int)

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

elementData

size

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

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

add(int ,E)—在数组指定位置添加

set(int E)—修改数组指定位置

remove(int)---根据索引号移除

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

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

ArrayList中的E是什么

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

--作者在编写的时候用E来表达数据类型的未知

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

如果给出E的具体类型,是在声明指针的时候给出

例如E=String   E=Car   E=Dog

不给的话E=Object

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

ArrayList<String>al1=new ArrayList

ArrayList<Car>al2=new ArrayList

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

双向链表封装类-LinkList

底层:Node 对象

Item子顶  next下一个   Node<E的类型>node=new Node()   prve上一个  没有无参构造方法,只有一个全参构造方法

构造方法

成员变量

成员方法

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()

Get()

数组有索引

链表没有索引

Index是序号不是索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值