1. 不大,容器本身就是数组,只是加上了一些控制访问或者其他的限制;在并发的条件下,收到并发数量和元素个数的影响,不同的数据结构在不同的场景下差异很大,这个数据可以参考<java并发编程实践>,书里有详尽的测试数据2.理论上应该是可以的,不过遍历很少会成为系统的瓶颈,所以很少会考虑在这个角度上对系统做优化

解决方案 »

  1.   

    java并发编程实践
    类似的并发编程的书籍,多线程类的书籍,经典的能否推荐基本呢?
    或者网上比较著名的源码也行。谢谢了
      

  2.   

    java并发编程实践
    类似的并发编程的书籍,多线程类的书籍,经典的能否推荐基本呢?
    或者网上比较著名的源码也行。谢谢了《java并发编程实践》个人感觉这本书很全面了,没读过其他的相关书籍,这本书一直放在手边做参考。源码的话,可以去读读Netty的源码,里面关于并发的消息接收分发的模型设计思想,可以借鉴
      

  3.   

    如果线程安全的容器进行遍历,效率会有差别吗?如果是Iterator方法,会有效率差,但是也可以忽略
      

  4.   

    如果线程安全的容器进行遍历,效率会有差别吗?如果是Iterator方法,会有效率差,但是也可以忽略
    我想知道这种效率差的量级有多大,PS自己手头没有条件写代码测试。
      

  5.   

    如果线程安全的容器进行遍历,效率会有差别吗?如果是Iterator方法,会有效率差,但是也可以忽略
    我想知道这种效率差的量级有多大,PS自己手头没有条件写代码测试。100W条数据  数组用下标遍历0秒  ArrayList用iterator遍历31秒
      

  6.   

    如果线程安全的容器进行遍历,效率会有差别吗?如果是Iterator方法,会有效率差,但是也可以忽略
    我想知道这种效率差的量级有多大,PS自己手头没有条件写代码测试。100W条数据  数组用下标遍历0秒  ArrayList用iterator遍历31秒我想问的是 100 万条数据,从头到底遍历一遍的意义是什么?
      

  7.   

    如果线程安全的容器进行遍历,效率会有差别吗?如果是Iterator方法,会有效率差,但是也可以忽略
    我想知道这种效率差的量级有多大,PS自己手头没有条件写代码测试。100W条数据  数组用下标遍历0秒  ArrayList用iterator遍历31秒我想问的是 100 万条数据,从头到底遍历一遍的意义是什么?意义在于他要
      

  8.   


    说反了吧数组是一种容器,但容器不仅仅有数组,容器还有链表,Map,Set,Tree等多种实现。
      

  9.   

    如果线程安全的容器进行遍历,效率会有差别吗?如果是Iterator方法,会有效率差,但是也可以忽略
    我想知道这种效率差的量级有多大,PS自己手头没有条件写代码测试。100W条数据  数组用下标遍历0秒  ArrayList用iterator遍历31秒
    ArrayList直接用for或者foreach遍历 再看看效率
      

  10.   

    容器跟数组差不多的。不过本地肯定是厉害得多了,毕竟java多了一个虚拟机
      

  11.   

    如果线程安全的容器进行遍历,效率会有差别吗?如果是Iterator方法,会有效率差,但是也可以忽略
    我想知道这种效率差的量级有多大,PS自己手头没有条件写代码测试。100W条数据  数组用下标遍历0秒  ArrayList用iterator遍历31秒
    ArrayList直接用for或者foreach遍历 再看看效率ArrayList用for肯定和数组一样  foreach==iterator  不用测
      

  12.   

    如果线程安全的容器进行遍历,效率会有差别吗?如果是Iterator方法,会有效率差,但是也可以忽略
    我想知道这种效率差的量级有多大,PS自己手头没有条件写代码测试。100W条数据  数组用下标遍历0秒  ArrayList用iterator遍历31秒
    ArrayList直接用for或者foreach遍历 再看看效率ArrayList用for肯定和数组一样  foreach==iterator  不用测
    不用测这三个字很不负责的。
      

  13.   

    如果线程安全的容器进行遍历,效率会有差别吗?如果是Iterator方法,会有效率差,但是也可以忽略
    我想知道这种效率差的量级有多大,PS自己手头没有条件写代码测试。100W条数据  数组用下标遍历0秒  ArrayList用iterator遍历31秒
    ArrayList直接用for或者foreach遍历 再看看效率ArrayList用for肯定和数组一样  foreach==iterator  不用测
    不用测这三个字很不负责的。看过JDK源码都知道   我比起你们这些逛说不写的   要负责的多
      

  14.   

    如果线程安全的容器进行遍历,效率会有差别吗?如果是Iterator方法,会有效率差,但是也可以忽略
    我想知道这种效率差的量级有多大,PS自己手头没有条件写代码测试。100W条数据  数组用下标遍历0秒  ArrayList用iterator遍历31秒
    ArrayList直接用for或者foreach遍历 再看看效率ArrayList用for肯定和数组一样  foreach==iterator  不用测
    不用测这三个字很不负责的。看过JDK源码都知道   我比起你们这些逛说不写的   要负责的多

    真狂啊 大牛都不吹的 这是求知的地方 你随便说个答案别人要是都相信了 还要学习干嘛?
      

  15.   

    如果线程安全的容器进行遍历,效率会有差别吗?如果是Iterator方法,会有效率差,但是也可以忽略
    我想知道这种效率差的量级有多大,PS自己手头没有条件写代码测试。100W条数据  数组用下标遍历0秒  ArrayList用iterator遍历31秒
    ArrayList直接用for或者foreach遍历 再看看效率ArrayList用for肯定和数组一样  foreach==iterator  不用测
    不用测这三个字很不负责的。看过JDK源码都知道   我比起你们这些逛说不写的   要负责的多

    真狂啊 大牛都不吹的 这是求知的地方 你随便说个答案别人要是都相信了 还要学习干嘛?你自己不写代码  不看源码  在这逼逼个鸡巴  这东西就是靠测的  你不信问个鸡巴  自己测啊  草  真不爱骂你
      

  16.   

    本地方法会因为指令的增多导致跟虚拟机效果差不多么?
    毕竟虚拟机解释跟本地方法调用方法一样,都需要另外的指令执行,二者效率真的会有很大差异么?
    不管是什么指令,到最后都必须解释为机器指令才能被机器所理解。先启动虚拟机,在一个类的生存周期里面,先装载,再重构造(具体怎么称呼忘记了,是将class重排序什么的),再运行,最后退出。运行过程中指令被虚拟机解释,虚拟机转化为机器码,这样就多了一个过程了,比如一个100W的遍历,就得多100W次。当然,这也涉及到了JAVA虚拟机的一部分置换算法或者是其他的优化算法,结果不尽相同,但是一定会花去一部分时间
      

  17.   

    我表示我只听说过java IO 瓶颈。JVM 很慢,那个是过去式了。数组是一种较为简单的数据结构,内存占用很少,遍历速度快。容器维护了较为复杂的数据结构,例如HashMap 维护了一个数组,数组的元素是一个链表。遍历的时候占用时间肯定增多。开发上,数组也有使用,总体上还是容器用的多一些。并发的话,选择高效的容器。例如 HashTable 是线程同步的,但是很慢。用synchronized 同步HashMap效率也不高。可以使用 conccurent 包下的 ConcurrentHashMap。
      

  18.   

    数组操作很多都是native的吧?
    理论上应该是最快的了如果实战,
    需要一定灵活度,比如不知道要装多少东西,
    用ArrayList就行,它里面也是Object数组的实现。至于快多少快几倍,
    现在的软硬件环境应该能提供很好的运行平台,
    可以忽略不计了(个人感觉)good luck
      

  19.   

    争论无用,写代码就行,下面代码有不足之处请指出。
    public static void testAyyayPerformance()
    {
    int[] intArray = new int[10000000];

    long start = System.currentTimeMillis();
    int j;
    for(int i : intArray){
    j = i;
    };
    long end = System.currentTimeMillis();
    System.out.println("数组耗时:" + (end - start));  //我电脑实测12ms

    ArrayList<Integer> arrayList = new ArrayList<Integer>();
    for(Integer i=0;i<10000000;i++){
    arrayList.add(i);
    }
    Integer intA;
    start = System.currentTimeMillis();
    for(Integer a : arrayList){
    intA = a;
    }
    end = System.currentTimeMillis();
    System.out.println("ArrayList耗时:" + (end - start));  //我电脑实测140ms
    }