暂时不考虑键值对的存储和map提供的方法的问题。
使用场景是这样的:我需要存储的是键值对,目前使用的是HashMap,有get和put操作,但是我想知道是不是使用ArrayList的话效果会更好一些,偶数存键,奇数存值。
我存储的数据量不多基本上都小于10个,但是需要创建的HashMap或ArrayList得很多,每一个存的数据比较少。
暂时不考虑键值对的存储和map提供的方法的问题。
使用场景是这样的:我需要存储的是键值对,目前使用的是HashMap,有get和put操作,但是我想知道是不是使用ArrayList的话效果会更好一些,偶数存键,奇数存值。
我存储的数据量不多基本上都小于10个,但是需要创建的HashMap或ArrayList得很多,每一个存的数据比较少。
对于你所说的数据量小于10的情况下,ArrayList<String> 和 HashMap<String, String>误差很小,使用哪个都不会影响性能;但从技术层讨论这个问题,就多啰嗦两句^.^
ArrayList是有序集合,其底层其实就是一个数组,如果是遍历的话和存储相对于HashMap还是要快些,但其增加、删除会比较慢,特别是从列表中间增加、删除(扯远了)
而HashMap是一个无序哈希表,他的查询顺序是跟数据量直接关联的,简单点说就是数据量越大,查询越慢!
总结:
小数据:两者均可使用。
大数据:查询频繁使用ArrayList,增删、改频繁,使用HashMap。
超大数据:使用ArrayList;
虽然不知道你为什么要比较List<String>和Map<String,String>的存储那个更快,对于这两个接口都有不同的实现类,像ArrayList和LinkedList就有很大不同,而HashMap, TreeMap, LinkedHashMap, WeakHashMap, IdentityHashMap这些Map的实现类行为,效率,保存对象周期以及key的等价策略更是有很大差异.当我没回答吧/(ㄒoㄒ)/~~
楼上对性能已经解释的很清楚了,
如果存储的数据小于10个的话,可以直接在声明时指定最大值10,这样可以节省内存空间,
List<String> list = new ArrayList<>(10);
Map<String, String> map = new HashMap<>(10);
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
不建议使用偶数存键,奇数存值的ArrayList方式,这个与我们写代码的一般逻辑相悖,对后来维护者也会造成很大的困扰。并且,现在手机性能都是很不错的,你的使用场景中,无需考虑性能的问题。