arraylist和map哪个性能更好
发布网友
发布时间:2023-07-31 15:32
我来回答
共3个回答
热心网友
时间:2024-06-11 06:19
Map有很多子类不清楚你说的是哪一种
他们的数据结构非常不同。不同的操作的性能结果不一样。
如果ArrayList 和Map存储的元素都比较多。那么在取元素方面,ArrayList要慢很多。
但是这也不是绝对的,因为ArrayList底层基于数组,如果你明确的知道你要取的元素在哪个下标上,那么ArrayList也是相当的快。但是如果你不清楚,只能通过迭代内部全部元素然后进行条件判断查找,那么ArrayList就要慢的多,因为他要从头到尾一个个的元素去查,直到找到满足你的要求的那个元素,而Map则不需要迭代,因为Map有键,直接取键对应的值。
对于添加元素,ArrayList是在数组的结尾追加,当容量不够时,创建一个新的更长的数组然后将旧的全部拷贝过来。Map和他的方式差不多,也是容量不足的时候需要重新创建新的然后拷贝,但是当发生删除元素时,ArrayList简直就是灾难。假设你有10000个元素,你删除首个元素,在删除完毕以后 ArrayList中的所有元素都必须进行一次移动操作,向前位移。。。而Map则不需要。
大概就是这样,如果你考虑一个长度比较可预测的保存元素的集合,并且很少有删除操作,大部分是进行全部迭代的操作,那么用ArrayList会比较合适。
如果你的List还要经常增删,那么用LinkedList比较合适。
如果你要快速查找,取值,用HashMap比较合适。
如果同时要保证,元素放进去的顺序和取出来的顺序一致用LinkedHashMap。
热心网友
时间:2024-06-11 06:19
Map有很多子类啊不清楚你说的是哪一种
他们的数据结构非常不同。不同的操作的性能结果不一样。
如果ArrayList 和Map存储的元素都比较多。那么在取元素方面,ArrayList要慢很多。
但是这也不是绝对的,因为ArrayList底层基于数组,如果你明确的知道你要取的元素在哪个下标上,那么ArrayList也是相当的快。但是如果你不清楚,只能通过迭代内部全部元素然后进行条件判断查找,那么ArrayList就要慢的多,因为他要从头到尾一个个的元素去查,直到找到满足你的要求的那个元素,而Map则不需要迭代,因为Map有键,直接取键对应的值。
对于添加元素,ArrayList是在数组的结尾追加,当容量不够时,创建一个新的更长的数组然后将旧的全部拷贝过来。Map和他的方式差不多,也是容量不足的时候需要重新创建新的然后拷贝,但是当发生删除元素时,ArrayList简直就是灾难。假设你有10000个元素,你删除首个元素,在删除完毕以后 ArrayList中的所有元素都必须进行一次移动操作,向前位移。。。而Map则不需要。
大概就是这样,如果你考虑一个长度比较可预测的保存元素的集合,并且很少有删除操作,大部分是进行全部迭代的操作,那么用ArrayList会比较合适。
如果你的List还要经常增删,那么用LinkedList比较合适。
如果你要快速查找,取值,用HashMap比较合适。
如果同时要保证,元素放进去的顺序和取出来的顺序一致用LinkedHashMap。
热心网友
时间:2024-06-11 06:20
ArryLIst适合用于查询,而删除慢.
map则没有删除慢的影响,所以在你不嫌麻烦的情况下,MAP性能好点
arraylist和map哪个性能更好
他们的数据结构非常不同。不同的操作的性能结果不一样。如果ArrayList 和Map存储的元素都比较多。那么在取元素方面,ArrayList要慢很多。但是这也不是绝对的,因为ArrayList底层基于数组,如果你明确的知道你要取的元素在哪个下标上,那么ArrayList也是相当的快。但是如果你不清楚,只能通过迭代内部全部元素然后...
ArrayList、LinkedList、HashMap哪个速度更快
要是HashMap改成HashSet就更合适些了,Map和List是不同的数据结构,放在一起有点不合适。HashSet就更好些,虽然Set的底层是hashmap。再理解下吧。
list和map在普通情况下哪个取数据快
map是以key-value形式保存数据的所以如果你是要查找某一数据的话map快,当然如果你知道数据存储的序号或顺序那么使用ArrayList也十分快速。不过总体上讲还是map更快一些
Java中请说明集合类ArrayList与 HashMap的区别?
他们的区别在于:ArrayList是有序的,会确保以一定的顺序保存元素,而HashMap是无需存储,并且是通过键值对的形式。ArrayList:是一个list集合的实现类,动态存储多个对象,集合的长度随着集合中的对象的个数而变化。HashMap:是map的一个实现类,存储一对对象(key-value)。通过key来查找value。(键值对中...
List和ArrayList,Map和HashMap的区别
Map是接口,Map特性就是根据一个对象查找对象.HashMap是它的实现类,HashMap用hash表实现的Map,就是利用对象的hashcode(hashcode()是Object的方法)进行快速散列查找.(关于散列查找,可以参看<<数据结构>>)一般情况下,如果没有必要,推荐代码只同List,Map接口打交道.比如:List list = new ArrayList();这样...
Java中List、Set、Map接口之间的区别和联系
Collection和Map是Java容器中的两种基本类型. 区别在于容器中每个位置保存的元素个数.Collection每个位置只能保存一个元素,包括List和Set.其中List以进入的顺序保存一组元素; 而Set中的元素不能重复.ArrayList是一种List,HashSet是一种Set,将元素添加入任意Collection都可以使用add() 方法.Map保存的是健值对.使用put(...
在Java中ArrayList、LinkedList、HashMap的区别是什么
和LinkedList一样,ArrayList也是非同步的(unsynchronized)。HashMap类 HashMap继承Map接口,实现一个key-value映射的哈希表。任何非空(non-null)的对象都可作为key或者value。总结 如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,...
List,Map,Set三个接口存取元素时,各有什么特点?
链表增删快,查找慢 ArrayList和Vector的区别:ArrayList是非线程安全的,效率高;Vector是基于线程安全的,效率低 Set接口有两个实现类:HashSet(底层由HashMap实现),LinkedHashSet SortedSet接口有一个实现类:TreeSet(底层由平衡二叉树实现) Query接口有一个实现类:LinkList Map接口有三个实现类:Hash...
请说明集合类ArrayList与 HashMap的区别
首先就内部的元素而言,ArrayList储存的是单个对象,即 ArrayList<String> al = new ArrayList<String>();而HashMap储存的是一组一组的key和value,像:HashMap<int,String> hm = new HashMap<int,String>();这样。另一个,就内部结构而言,ArrayList是有序的,而HashMap无序。
arraylist和map的区别
他们的底层实现不同,ArrayList和Map的底层实现是数组,Set的底层实现是Map,Map是要存放两个值,key和value,key不能重复,而Set的实现是存放Map的key,所以Set的值也不能重复,ArrayList有序可重复,Map,和Set无序,不可重复