![]() |
1
76
您具体询问的是关于arraylist和hashmap的问题,但我认为为了完全理解正在发生的事情,您必须了解collections框架。因此,arraylist实现列表接口,hashmap实现映射接口。所以真正的问题是你什么时候想使用列表,什么时候想使用地图。这是Java API文档帮助很大的地方。 名单:
地图:
因此,正如其他答案所讨论的,列表接口(array list)是使用索引访问的对象的有序集合,很像数组(在arraylist的情况下,顾名思义,它只是背景中的一个数组,但是处理数组a的很多细节为你重新处理)。当您想要保持事物的排序顺序(它们被添加的顺序,或者实际上是添加对象时您在列表中指定的位置)时,可以使用数组列表。 另一方面,映射接受一个对象并将其用作另一个对象(值)的键(索引)。所以假设您有具有唯一ID的对象,并且您知道您希望在某个点上通过ID访问这些对象,地图将使这对您非常容易(并且更快/更有效)。哈希映射实现使用键对象的哈希值来定位其存储位置,因此不再保证值的顺序。然而,Java API中的其他类可以提供这一点,例如Link Khash映射,也可以使用哈希表来存储键/值对,还可以按照它们添加的顺序维护键的列表(Link KEdLIST),这样您就可以按照它们的顺序再次访问这些项。DDED(如果需要)。 |
![]() |
2
16
如果使用
这是不可能(或更困难)的
所以,这意味着
另一个有用的例子是在游戏中:你有一组图像,你想翻转它们。因此,编写图像翻转方法,然后存储翻转结果:
你翻转了玩家一次,然后将其储存起来。您可以访问
希望你能理解我的第二个例子。 |
![]() |
3
14
不是一个Java特定的问题。似乎您需要一个关于数据结构的“入门”。尝试谷歌搜索“你应该使用什么数据结构” 尝试此链接 http://www.devx.com/tips/Tip/14639 从链接: 下面是一些将最常用的数据结构与特定需求相匹配的提示。
如果要以键值对的形式访问存储的数据,哈希表或类似的数据结构是很好的候选者。例如,如果您正在提取雇员的名称,那么可以将结果以哈希表的形式作为(名称、值)对返回。但是,如果要返回多个雇员的姓名,则直接返回哈希表不是一个好主意。请记住,这些键必须是唯一的,否则您以前的值将被覆盖。
当您希望顺序访问甚至随机访问时,这是一个很好的选择。此外,如果最初数据大小未知,并且/或者将动态增长,那么使用列表或向量是合适的。例如,要存储JDBC结果集的结果,可以使用java.util.LinkedList。但是,如果要查找可调整大小的数组,请使用java.util.arraylist类。
不要低估数组。大多数时候,当我们必须使用对象列表时,我们倾向于考虑使用向量或列表。但是,如果集合的大小已经知道并且不会改变,则可以将数组视为潜在的数据结构。访问数组元素比访问向量或列表更快。这很明显,因为你只需要一个索引。额外的get方法调用没有开销。 4.组合 有时,最好结合使用上述方法。例如,您可以使用哈希表列表来满足特定的需要。
从JDK1.2开始,您还拥有set类,如java.util.treeset,这对于没有重复项的排序集很有用。关于这些类,最好的一点是它们都遵守特定的接口,这样您就不必担心细节了。例如,请查看以下代码。
|
![]() |
4
4
将列表用于仅包含值的有序集合。例如,您可能有一个要处理的文件列表。
使用从键到值的映射(通常是无序的)。例如,您可能有一个从用户ID到该用户详细信息的映射,这样您就可以有效地找到仅给定ID的详细信息。(您
能够
实施
|
![]() |
5
4
地图与清单。 在映射中,您有键/值对。要访问一个值,您需要知道该键。键和持续存在的值之间存在关系,并且不是任意的。他们之间有某种联系。例:一个人的DNA是唯一的(键),一个人的名字(值)或一个人的SSN(键)和一个人的名字(值)有着很强的关系。 在列表中,您所拥有的只是值(人名),要访问它,您需要知道它在列表(索引)中的位置才能访问它。但列表中的值的位置与其索引之间没有永久性的关系,是任意的。 |
|
user29759326 · 如何返回递归函数中的最后一个值? 6 月前 |
|
malife89 · 将java中的字符串读取为正确的日期格式 6 月前 |
![]() |
Tim · 在java中,有没有更快的方法将字节数组写入文件? 6 月前 |
![]() |
rudraraj · java中未声明最终变量 6 月前 |
![]() |
Bala Ji · 以下BFS的实施效率如何? 6 月前 |