java中的HashMap和ArrayList之间的区别?

在Java中,ArrayList和HashMap用作集合。但我不明白在哪些情况下,我们应该使用ArrayList和哪个时间使用HashMap。他们之间的主要区别是什么?
最佳答案
你具体询问ArrayList和HashMap,但是我认为要完全理解你正在做什么,你必须了解Collections框架。所以一个ArrayList实现List接口和一个HashMap实现Map接口。所以真正的问题是什么时候你想使用一个列表,你什么时候要使用一个地图。这是Java API文档帮助很多。

列表:

An ordered collection (also known as a
sequence). The user of this interface
has precise control over where in the
list each element is inserted. The
user can access elements by their
integer index (position in the list),
and search for elements in the list.

地图:

An object that maps keys to values. A
map cannot contain duplicate keys;
each key can map to at most one value.

所以像其他答案已经讨论的,列表接口(ArrayList)是一个有序的对象集合,你使用索引访问,很像一个数组(在ArrayList的情况下,正如名字所暗示的,它只是一个数组在背景,但是很多处理数组的细节都是为你处理的)。当您希望按照排序顺序(添加顺序,或者添加对象时指定的列表中的位置)来使用ArrayList时,可以使用ArrayList。

另一方面,地图获取一个对象,并将其用作另一个对象(值)的键(索引)。所以让我们说你有对象有唯一的ID,你知道你将要通过ID访问这些对象在某些时候,地图将使这很容易你(和更快/更高效)。 HashMap实现使用密钥对象的哈希值来定位它存储的位置,因此不再有值的顺序的保证。然而,在Java API中可以提供其他类,例如。 LinkedHashMap,以及使用哈希表来存储键/值对,还按照它们被添加的顺序维护键的List(LinkedList),所以您可以总是按它们被添加的顺序访问项目如果需要的话)。

转载注明原文:java中的HashMap和ArrayList之间的区别? - 代码日志