ArrayList、HashSet、HashMap异同

越详细越好

第1个回答  2011-12-31
ArrayList是一位数组形式的可变数组,里面可以存放单个对象,
HashSet、HashMap也是可变集合,但是一次要存放两个内容的,比如一个帐号,一个密码,到时候可以通过账号获取密码,
ArrayList{a,a,a,a}
HashMap{"a":aa, "b":bb}
第2个回答  2011-12-31
ArrayList类
  ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。
size,isEmpty,get,set方法运行时间为常数。但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间。其他的方法运行时间为线性。
  每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义。当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。
  和LinkedList一样,ArrayList也是非同步的(unsynchronized)。

HashMap类
  HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null,即null value和null key。,但是将HashMap视为Collection时(values()方法可返回Collection),其迭代子操作时间开销和HashMap的容量成比例。因此,如果迭代操作的性能相当重要的话,不要将HashMap的初始化容量设得过高,或者load factor过低。
两个通用Set实现是HashSet 和TreeSet。要决定用哪一个,那是非常简单明了的。 HashSet 要快得多 (对大多数操作是常数时间之于对数时间(constant time vs. log time)), 但不提供排序保证。如果你需要使用 SortedSet 中的操作,或者按顺序迭代对你来说是重要的,那么请使用 TreeSet。 否则,使用 HashSet。 在大多数时间都不使用 HashSet ,对你来说是个公平的赌博。

  关于 HashSet,有一件事应该牢记,即就条目数和容量之和来讲,迭代是线性的。因此,如果迭代性能很重要,那就应该慎重选择一个适当的初始容量。容量选得太大,既浪费空间,也浪费时间。 默认的初试容量是101, 一般来讲,它比你所需要的要多。可以使用 int 构造函数来指定初始容量。要分配 HashSet 的初始容量为本回答被提问者采纳

java集合问题
HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null,即null value和null key。,但是将HashMap视为Collection时(values()方法可返回Collection),其迭代子操作时间开销和HashMap的容量成比例。因此,如果迭代操作的性能相当重要的话,不要将HashMap的初始化容量设得过高,或者load factor过低。 ---1.Li...

Java五个最常用的集合类之间的区别和联系
HashMap可以让你将空值作为一个表的条目的key或value Hashtable是不能放入空值(null)的 ArrayList和Vector的区别:ArrayList与Vector都是java的集合类,都是用来存放java对象,这是他们的相同点,区别:1.同步性:Vector是同步的,这个类的一些方法保证了Vector中的对象的线程安全的,而ArrayList则是异步的...

List、Set、Map三种集合的区别
基本的不同点是Hashtable同步HashMap不是同步的,所以无论什么时候有多个线程访问相同实例的可能时,就应该使用Hashtable,反之使用HashMap。非线程安全的数据结构能带来更好的性能。如果在将来有一种可能—你需要按顺序获得键值对的方案时,HashMap是一个很好的选择,因为有HashMap的一个子类 LinkedHashMap...

java有哪些有序集合
2.Set:是简单的集合,它的对象不按特定方式排序,只是简单的把对象加入集合中。不能有重复对象。HashSet:特点:无序的,长度可变的,不可重复的。3.Map:Map中存入的对象是一对一对的,即每个对象和它的一个名字(键:key)关联在一起,一个键(key)只能对应一个值(value),反则不然。HashMap...

简述hashmap hashset arraylist linklist 适用场合
HashMap类 HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null,即null value和null key。,但是将HashMap视为Collection时(values()方法可返回Collection),其迭代子操作时间开销和HashMap的容量成比例。因此,如果迭代操作的性能相当重要的话,不要将HashMap的初始化容量设得...

List,Set,Map三者的区别?
Map是一个键值对的集合,根据键快速查找值。HashMap、TreeMap和LinkedHashMap是Map接口的三个实现类。HashMap基于哈希表实现,添加、删除、查找元素的速度快,但键的顺序不可预测。TreeMap基于红黑树实现,键有序,但速度较慢。LinkedHashMap基于哈希表和链表实现,键按插入顺序排序,但速度较慢。总结来...

List LinkedList HashSet HashMap底层原理剖析
而remove方法默认移除第一个元素,移除指定元素时则需要遍历查找,但与ArrayList相比,无需执行位置挪移。HashSet底层基于HashMap。HashMap在Java 1.7版本之前采用数组和链表结构,自1.8版本起,则采用数组、链表与红黑树的组合结构。在Java 1.7之前,链表使用头插法,但在高并发环境下可能会导致链表死...

JAVA语言中 常用的集合有那些,它们的特点是什么?
map:hashlist,treemap,linkedhashmap set:hashset,treeset,linkedhashset set:不能插入重复的元素。map:是以key-vlaue对的形式存放的。就像字典一样。list:已插入的顺序为准读取的。arraylist:在数据的插入和删除方面速度不佳,但是在随意提取方面较快。linkedlist:在指定的位置插入和删除数据佳,但是...

Java中请说明集合类ArrayList与 HashMap的区别?
他们的区别在于:ArrayList是有序的,会确保以一定的顺序保存元素,而HashMap是无需存储,并且是通过键值对的形式。ArrayList:是一个list集合的实现类,动态存储多个对象,集合的长度随着集合中的对象的个数而变化。HashMap:是map的一个实现类,存储一对对象(key-value)。通过key来查找value。(键值对中...

List,Map,Set三个接口存取元素时,各有什么特点?
链表增删快,查找慢 ArrayList和Vector的区别:ArrayList是非线程安全的,效率高;Vector是基于线程安全的,效率低 Set接口有两个实现类:HashSet(底层由HashMap实现),LinkedHashSet SortedSet接口有一个实现类:TreeSet(底层由平衡二叉树实现) Query接口有一个实现类:LinkList Map接口有三个实现类:Hash...

相似回答