区别:(1)
collection map
/ \ |
list set hashmap
|
arraylist
如果你单说这三个的区别,那就多了
第一,set是接口,arraylist和hashmap是类
第二,arraylist和set是在collection下的和hashmap的数据存储结构是不一样的,hashmap是以key,value的形式存储的。这是有本质的不同
第三,arraylist是有序链表,而set是无序的,(这里的有序和无序代表的是数据存储结构)
如果单说数据值的排序,set下面也有sortset,treeset
(2)
集合有三种:list (列表) set (集) map()
List<E> list= new ArrayList<E>
Set<.E> set=new HashSet<E>
这两个用法很接近,但是list内容可以重复,而set不允重复,
Map<key,value> map = HashMap<key,value>
是用K来保存value的值,与上面两种都不同
(3)
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中,最常见的对象容器包括ArrayList、List、Set和HashMap等。这些容器各自具有不同的特性和用途,理解并熟练掌握它们对于提升Java编程能力至关重要。 ArrayList是Java集合框架中的一个动态数组,它允许我们在...
- **允许空键和空值**:`HashMap` 允许一个 null 键和多个 null 值。 - **应用场景**:适用于需要快速查找、插入和删除键值对的场景。例如,存储配置项、缓存数据等。 ### Vector vs ArrayList #### 区别 - **线程...
在AS3中,我们经常会用到几种数据结构,如ArrayList、Set和HashMap,这些数据结构在处理和组织数据时非常有用。这篇博客(尽管链接无法直接查看)可能详细介绍了如何在Flash CS6中导入外部的SWC文件,并在AS3项目中...
本篇文章将深入探讨JavaScript中的HashMap、Set和ArrayList等集合类的实现,并与Java中的相应概念进行对比,帮助开发者更好地理解和应用这些数据结构。 **1. HashMap** 在Java中,HashMap是一个散列映射容器,它...
List、ArrayList、Vector及map、HashTable、HashMap是Java容器类中的几个重要的接口和实现类,了解它们之间的区别是非常重要的。 首先,我们来看List和ArrayList的区别。List是一个接口,而ArrayList是一个实现了...
集合类可以分为三大类:Collection、List 和 Set。 Collection 是集合框架中的根接口,提供了基本的集合操作,如 add、remove、contains 等。Collection 接口没有实现类,因此需要通过其子接口来实现。 Set 是一个...
### Hashtable与HashMap的区别详解 #### 一、基本概念与历史背景 在Java编程语言中,`Hashtable` 和 `HashMap` 都是用来存储键值对的数据结构。这两种数据结构虽然相似,但是在实现细节上存在显著差异。 1. **...
ArrayList和LinkedList虽然不是Set,但它们的父接口List属于Collection,而Collection接口有一个子接口Set,例如HashSet是Set接口的一个实现,它内部基于HashMap实现,保证元素唯一性。 7. WeakHashMap WeakHashMap...
在Java集合框架的学习中,除了List接口的实现,还应了解Set接口(如HashSet和TreeSet)和Map接口(如HashMap和TreeMap)等其他容器,以及它们的数据结构和操作特性。同时,关注集合框架的并发支持,如...
Collection, List, Set 和 Map 用法和区别 Collection 是 Java 中的一种对象集合,提供了许多有用的方法来操作集合元素,例如添加、删除、遍历等。Collection 是一个接口,下面有两个子接口:List 和 Set。 List ...
本实例将带你深入理解ArrayList的用法,结合HashMap和监听器的应用,进一步提升你的Android开发技能。 首先,ArrayList的基本操作包括添加元素(add())、删除元素(remove())、获取元素(get())以及修改元素...
本文主要探讨了几个关键的集合接口和实现类的底层源码,包括List、HashMap、HashSet等,以及它们的基本操作。 首先,Collection接口是所有单值集合的父接口,提供了增加、删除、遍历元素的基本方法。例如,`add()`...
Java 集合框架中 List、Set、Map 的用法和区别 Java 集合框架(Java Collections Framework)是 Java 语言中的一个重要组件,提供了一些基本的数据结构和算法来操作和存储数据。其中,List、Set、Map 是三个非常...
ArrayList和Vector的主要区别在于Vector使用了synchronized方法,线程安全,而ArrayList则没有。 ArrayList是Java中最常用的List实现类,它提供了高效的插入、删除和遍历元素的方法。ArrayList基于数组实现,故插入...
掌握List集合、Set集合、Map集合的使用以及Iterator迭代器和foreach循环的使用 了解常用的集合类 熟悉泛型的使用
总结来说,这段代码展示了如何在HashMap中通过值来查找键,这通常需要遍历整个HashMap的Entry集合,并使用Map.Entry的`getValue()`和`getKey()`方法进行比较。虽然这种方法在大数据量的情况下效率较低,但在某些场景...
- **内存和性能权衡**:`HashMap`和`ArrayList`在大多数情况下提供更好的性能,但在内存有限的情况下,可能需要考虑更节省空间的选项。 通过深入了解这些集合类型的特点,开发者可以更合理地选择和使用它们,从而...
### List、Map、Set 的核心概念与特性 #### 一、List ...了解它们之间的区别和联系可以帮助开发者更好地选择合适的数据结构来解决问题。通过合理选择实现类,可以在满足功能需求的同时提高程序的性能。
ArrayList提供了许多方法,如`add()`用于添加元素,`get()`用于获取元素,`set()`用于修改元素,以及`size()`用于获取元素数量。 **Stack** 是另一个重要的数据结构,它是ArrayList的一个子类,实现了Stack接口。...