suchen

Heim  >  Fragen und Antworten  >  Hauptteil

java - 使用ArrayList<String> 和 使用HashMap<String, String> 存储键值对,哪个速度更快一些

ringa_leeringa_lee2887 Tage vor723

Antworte allen(6)Ich werde antworten

  • 高洛峰

    高洛峰2017-04-18 10:43:08

    不建议使用偶数存键,奇数存值的ArrayList方式,这个与我们写代码的一般逻辑相悖,对后来维护者也会造成很大的困扰。并且,现在手机性能都是很不错的,你的使用场景中,无需考虑性能的问题。

    Antwort
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:43:08

    对于你所说的数据量小于10的情况下,ArrayList<String> 和 HashMap<String, String>误差很小,使用哪个都不会影响性能;但从技术层讨论这个问题,就多啰嗦两句^.^

    ArrayList是有序集合,其底层其实就是一个数组,如果是遍历的话和存储相对于HashMap还是要快些,但其增加、删除会比较慢,特别是从列表中间增加、删除(扯远了)

    而HashMap是一个无序哈希表,他的查询顺序是跟数据量直接关联的,简单点说就是数据量越大,查询越慢!

    总结:
    小数据:两者均可使用。
    大数据:查询频繁使用ArrayList,增删、改频繁,使用HashMap。
    超大数据:使用ArrayList;

    Antwort
    0
  • PHPz

    PHPz2017-04-18 10:43:08

    这个和数据量有关

    Antwort
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:43:08

    看你的使用方式啰,如果只是存储和遍历List快,如果要通过key查value的话Map快

    Antwort
    0
  • PHPz

    PHPz2017-04-18 10:43:08

    虽然不知道你为什么要比较List<String>和Map<String,String>的存储那个更快,对于这两个接口都有不同的实现类,像ArrayList和LinkedList就有很大不同,而HashMap, TreeMap, LinkedHashMap, WeakHashMap, IdentityHashMap这些Map的实现类行为,效率,保存对象周期以及key的等价策略更是有很大差异.当我没回答吧/(ㄒoㄒ)/~~

    Antwort
    0
  • 高洛峰

    高洛峰2017-04-18 10:43:08

    楼上对性能已经解释的很清楚了,
    如果存储的数据小于10个的话,可以直接在声明时指定最大值10,这样可以节省内存空间,

    List<String> list = new ArrayList<>(10);
    Map<String, String> map = new HashMap<>(10);

    Antwort
    0
  • StornierenAntwort