Java数据结构整理------ArrayList&LinkedList

Java数据结构整理------List

最近在准备面试题,就想顺便在这里复习一下。
List 一个线性表,在地址空间上非连续
对于插入新节点,直接插在表头即可,时间复杂度是O(1)
对于删除节点,如果一直节点的位置,只需要将前面节点的指针直接指向该删除节点的next,时间复杂度O(1)。
对于查找来说,链表的查找需要遍历链表所有节点,时间复杂度O(n).
在Java中,我们在创建一个链表的时候,常用的有ArrayList,LinkedList这两种选择;
语法:

List<Integer> list = new ArrayList<>();
List<Integer> list = new LinkedList<>();

ArrayList

ArrayList,相当于C++中的vector,长度非固定,但是只能存储对象,不能存储原始数据类型例如int、char.
虽然相当于vector,但是ArrayList不能通过下标访问!!!!!

operationmethod
添加add(Object)
访问get(int index)
更新set(int index, Object newValue)
长度length()
删除remove(int index)|| remove (Object)
排序java.util.Collections.sort(arraylist)

内部结构:
ArrayList内部其实是用数组来实现的,
其扩容方式为:

int newCapacity = oldCapacity + (oldCapacity >> 1);

是原来大小的(3/2)倍。

LinkedList

使用了循环双向链表数据结构,一个节点的实现如下:

private static class Node<E>{
	E item;
	Node<E> next;
	Node<E> prev;
	Node(Node<E> prev, E element, Node<E> next){
		this.item = element;
		this.next = next;
		this.prev = prev;
	}
}

所以,在一开始创建LinkedList的时候,其实是创建了一个空的头指针。

operationmethod
添加add(Object)//end of the list | addFirst(Object)| addLast(Object)
访问get(int index) | getFirst() | getLast()
更新set(int index, Object newValue)
长度size()
删除remove(int index)| remove (Object) | removeFirst() | removeLast()
排序java.util.Collections.sort(linkedlist)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值