Arrylist 与 Linkedlist 的区别

简介: Arrylist 与 Linkedlist 的区别

1.Arrylist和LinkedLIst低层代码的不同

Arrylist低层是由数组所实现的,且ArryList类是一个可以动态修改数组,但是他与普通数组的区别在于没有固定大小的限制。

LinkedList低层则是由链表构成,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。

2.Arrylist和LinkedList的优化

ArryList 因为是动态数组所以每个元素都有下表当进行查询和修改时速度要比LIkedList要快,但是同时删除和增加要比LikedLlist要慢。

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;
}
}

其中Likedlist中定义了一个Node结构,其中Node结构又包括

元素内容 item、前指针prev以及后指针next。

ArryList的遍历则是

public E get(int index) {
    rangeCheck(index);
    return elementData(index);
}
E elementData(int index) {
    return (E) elementData[index];
}

若想将这个LIkeList有序化可以使用这个代码

likedList的属性名为:ll
写一个名为pop的方法
public string pop(){
 return ll.removeLast();
}
在likedList类中调用pop方法即可

至于Arrylist与其说是优化ArryList不如说是增长因子论证

我们在用到Arrylist时在后<>后面的括号内定值使它的数据超过100时才会增长这样在存储数据时效率要比不定要快,同时我们要来了解到Arrylist的增长因子是数组像在的长度的1.5倍

ArryList<>() list=new Arrylist<>(100)

3.如何去重

Arrylist list=new ArryList();
Arrylist list=new ArryList();
if(!list.contains(n)){
list.add(n);
}

在上列代码中若n为对象便要在对象中去重写equals方法即可


相关文章
|
8月前
|
存储 安全 Java
ArrayList vs. LinkedList: Java集合框架的比较与应用
ArrayList vs. LinkedList: Java集合框架的比较与应用
|
2月前
|
索引
ArrayList和LinkedList的区别
ArratList的底层使用动态数组,默认容量为10,当元素数量到达容量时,生成一个新的数组,大小为前一次的1.5倍,然后将原来的数组copy过来; 因为数组有索引,所以ArrayList查找数据更快,但是添加数据效率更低 LinkedList的底层使用链表,在内存中是离散的,没有扩容机制;LinkedList在查找数据时需要从头遍历,所以查找慢,但是添加数据效率更高
|
2月前
LinkedList
LinkedList 是一个基于双向链表实现的集合类,经常被拿来和 ArrayList 做比较。 实现了以下接口: List : 表明它是一个列表,支持添加、删除、查找等操作,并且可以通过下标进行访问。 Deque :继承自 Queue 接口,具有双端队列的特性,支持从两端插入和删除元素,方便实现栈和队列等数据结构。需要注意,Deque 的发音为 "deck" [dɛk],这个大部分人都会读错。 Cloneable :表明它具有拷贝能力,可以进行深拷贝或浅拷贝操作。 Serializable : 表明它可以进行序列化操作,也就是可以将对象转换为字节流进行持久
|
7月前
|
存储 Java 容器
【JAVA集合篇 - LinkedList】你真的了解LinkedList吗?
【JAVA集合篇 - LinkedList】你真的了解LinkedList吗?
54 0
|
存储 Java 索引
每日一道面试题之ArrayList 和 LinkedList 的区别是什么?
每日一道面试题之ArrayList 和 LinkedList 的区别是什么?
|
安全
ArrayList 和 LinkedList 的区别【重要】
ArrayList 和 LinkedList 的区别【重要】
80 0
|
8月前
|
存储 安全
ArrayList 和 LinkedList 的区别
ArrayList 和 LinkedList 的区别
|
8月前
面试题之:ArrayList和LinkedList有哪些区别
面试题之:ArrayList和LinkedList有哪些区别
|
8月前
|
存储 Java 索引
Java集合框架:ArrayList和LinkedList的区别是什么?
Java集合框架:ArrayList和LinkedList的区别是什么?
74 0
|
存储 容器
集合框架之ArrayList和LinkedList的区别
集合框架之ArrayList和LinkedList的区别
79 0