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方法即可