有100个数据(例如从1到100这100个数),一个用vector存放,一个用<1,null> <2,null>这样的方法存放到HashMap中。
下面这两个判断语句,谁的执行快?为什么?
vector.contains(n)
hashmap.containskey(n)
或者,有没有更快的查询一个数是否在一群数当中的方法?

解决方案 »

  1.   

    hashMap可能会快些.
    Vector是线程安全的,同步方法会造成性能损失,而且vector.contains(n) 是用循环的方法来定位元素.
    hashMap不是同步的.而且用hashcode来定位元素,理论上的复杂度比较低,
      

  2.   

    不用想了,HashMap 的查找速度比 List, Vector 快成百上千倍,不过我感觉这两个没可比性,
    数据结构都不一样,一个是键值对,一个是就是个数组列表,你应该用 HashSet 和 ArrayList
    或 Vector 来比较。根据实际项目中的测试。测试数据是两个 20 余万条数据的文件,找出新增、删除的条目。采用 ArrayList 时执行的速度是 12 分钟左右
    采用 HashSet 时执行的速度是 3 秒左右
      

  3.   

    Firstly, just like 3# said.
    Secondly, you can write a paragragh codes to verify the effect.
      

  4.   

    如果是100个那结果是不确定的,因为两者都很快
    如果是100万个 显然 hashmap 更快