理论上来说,肯定LinkedList比ArrayList随机访问效率要低,然后LinkedList比ArrayList插入删除元素要快。 突然想起之前写一个日记本程序,是用LinkedList+Map索引,作为数据库。Map记录了LinkedList中每一个日记的index和日期之间的对应关系。从Map中获取到某个日期对应日记的index,然后再去LinkedList,get(index)。 Integer a=1...
addLast(E e):在LinkedList的末尾添加一个元素。 remove():删除LinkedList中的第一个元素。 remove(Object o):删除LinkedList中指定的元素。 removeFirst():删除LinkedList中的第一个元素。 removeLast():删除LinkedList中的最后一个元素。 size():获取LinkedList的元素数量。 get(int index):根据下标获取LinkedList中指...
Collection<?extendsE> c) {//插入指定集合到链表的指定位置checkPositionIndex(index);//1、检查index范围是否在size之内Object[] a= c.toArray();//2、toArray()方法把集合的数据存到对象数组中intnumNew =a.length;if(numNew == 0)returnfalse; ...
使用getFirst()方法获取LinkedList的第一个元素: String firstElement=linkedList.getFirst(); 使用getLast()方法获取LinkedList的最后一个元素: String lastElement=linkedList.getLast(); 使用get(index)方法获取LinkedList中指定索引位置的元素: String element=linkedList.get(index); 修改元素: 使用set(index, element...
1.LinkedList的随机访问速度确实差点,大概用了17毫秒。下边会贴出LinkedList随机访问的源代码,也就是这里为什么选择1000000中间数的原因。 2.Java栈区和堆区都是有限的,list那里如果一次添加5000000个item就会内存溢出 (Exception in thread "main"java.lang.OutOfMemoryError: Java heap space)。
get()方法,可以通过传递数字,查找LinkedList对应索引节点上的数据。 public Object get(int index) { if(index< 0||index > size -1) { throw new RuntimeException("索引数字不合法" + index); } if(index <= (size>>1)) { //索引index小于链表长度的一半,从链表头部开始查找 ...
import java.util.LinkedList; public class RunoobTest { public static void main(String[] args) { LinkedList<String> sites = new LinkedList<String>(); sites.add("Google"); sites.add("Runoob"); sites.add("Taobao"); sites.add("Weibo"); System.out.println(sites); } }以上...
1.2 LinkedList 的实例变量 private static final long serialVersionUID = 876323262645176354L; // 版本号 transient int size = 0; // 元素个数 transient Node<E> first; // 首元素 transient Node<E> last; // 末尾元素 1. 2. 3. 4. 那么,Node 节点,封装了啥呢?
但考虑到 LinkedList 还实现了 List 接口,具备了 List 的特性,例如通过下标获取到指定值,这个实现就比较复杂了,也会消耗掉O(n)的时间。 publicEget(intindex){checkElementIndex(index);returnnode(index).item;}Node<E>node(intindex){if(index<(size>>1)){Node<E>x=first;for(inti=0;i<index;i++)...
通过对两个添加方法的分析,我们可以很明显的感受到LinkedList添加元素的效率,不需要扩容,不需要复制数组。 get public E get(int index) { //检查下标元素是否存在 实际上就是检查下标是否越界 checkElementIndex(index); //如果没有越界就返回对应下标节点的item 也就是对应的元素 return node(index).item; } ...