zoukankan      html  css  js  c++  java
  • 关于集合中的实现细节

    ArrayList跟LinkedList哪个效率高

    ArrayList的底层是以数组形式存在的,所以在查询时可以根据索引直接取到值,而在指定位置添加或者删除时就会将指定索引处位置向后的元素全部移动,所以开销很大,效率非常低;而LinkedList的底层是以双向链表形式存在的,当将元素插入到某个位置时( add(int index,Object obj) ),它会一个一个去搜索索引的位置,然后再将元素插入到里边,但相对于ArrayList性能要高得多,而查询的时候也要通过遍历的方式去一步一步找到元素的位置,在返回值。

    但有一点需要注意的是,当我们从ArrayList中逐个插入元素时( add(Object obj) )它的效率要比LinkedList效率高,因为ArrayList插入元素的位置后面没有元素不需要移动后面的元素 ,所以内存不会有大的开销。

    综合上面来看,一般来说ArrayList的效率要比LinkedList高。下面是测试的代码:

      public class TestList extends TestCase{
        public void testVector() throws Exception {
        List arr=new ArrayList();
        List alist=new LinkedList();
        for (int i = 0; i < 100000; i++) {
          arr2.add(i);
          arr.add(i);
        }
        Long date1=new Date().getTime();
        for (int i = 0; i < 1000; i++) {
         arr.add(i+10,i+100);
         //alist.add(i+10,i+100);

        }
        System.out.println(new Date().getTime()-date1);
        }
      }

  • 相关阅读:
    ^_^【CSS代码规范】规则顺序
    【html】三
    【代码组织】♣一
    LINUX nautilus 命令
    hadoop 统计一个目录的文件大小
    hadoop基本配置信息
    linux中用到的命令
    简单的hadoop配置(我安装的问题)
    hadoop不能用root用户启动,会报错
    linux 下的ps与jps
  • 原文地址:https://www.cnblogs.com/qingtianyu/p/3512298.html
Copyright © 2011-2022 走看看