当前位置: 首页 > 面试题库 >

何时在LinkedList或ArrayList上使用HashMap,反之亦然

仲孙钊
2023-03-14
问题内容

为什么我们不能总是使用HashMap的原因是什么,即使它在添加,删除操作中比ArrayList或LinkedList效率高得多,也与元素的数量无关。

我用Google搜索它,发现了一些原因,但是始终存在使用HashMap的变通办法,而优势仍然存在。


问题答案:

列表表示元素的顺序。映射用于表示键/值对的集合。

虽然可以将地图用作列表,但这样做有一定的缺点。

维护顺序:
-按定义排序列表。您添加项目,然后您可以按照插入项目的顺序遍历列表。将项目添加到HashMap时,不能保证以与放入项目相同的顺序检索这些项目。HashMap的子类(如LinkedHashMap)将保持该顺序,但通常不能保证Map的顺序。

键/值语义: -映射的目的是基于键存储项目,该键可在以后用于检索项目。只有在键恰巧是列表中位置的有限情况下,列表才能实现类似的功能。

代码的可读性 请考虑以下示例。

    // Adding to a List
    list.add(myObject);         // adds to the end of the list
    map.put(myKey, myObject);   // sure, you can do this, but what is myKey?
    map.put("1", myObject);     // you could use the position as a key but why?

    // Iterating through the items
    for (Object o : myList)           // nice and easy
    for (Object o : myMap.values())   // more code and the order is not guaranteed

集合功能 通过Collections类可以为列表提供一些出色的实用程序功能。例如 …

    // Randomize the list
    Collections.shuffle(myList);

    // Sort the list
    Collections.sort(myList, myComparator);

希望这可以帮助,



 类似资料:
  • 我是测试新手,我遇到过TDD和BDD方法。但我对此感到困惑。我不知道什么时候使用TDD代替BDD是更好的选择,反之亦然。我看到了一些文章,但它们更多的是关于差异的... 我有一些提示,但不确定它们的有效性。 场景2:+gived,when,then 情景三:... 2)但是如果我想要实现一些GUI,那么在我看来BDD是更好的选择...因为它是一个用户可以控制的东西(点击按钮,填充字段,等等)...

  • 问题内容: 似乎它们都可以让您检索最小值(这是我的Prim算法所需的),并迫使我删除并重新插入密钥以更新其值。不仅对于本示例,而且一般来说,使用一个相对于另一个有任何优势吗? 问题答案: 一般来说,使用堆仅跟踪最小元素的工作量较小。 一棵树更有组织性,并且需要更多计算才能维护该组织。但是,如果您需要访问 任何 键,而不仅仅是最小键,那么堆就不够了,并且树的额外开销是合理的。

  • 因此用户可以创建包含列和行的表。我认为MongoDB或CouchDB对此会有好处,但我不确定是哪一个。我也需要高效的分页以及。

  • 问题内容: 我一直是一个简单使用的人: 我将接口用作可移植性的类型名称,这样当我问诸如此类的问题时,便可以重新编写代码。 什么时候应该使用过,反之亦然? 问题答案: 摘要 用在最好许多更多使用情况比。如果不确定,请从开始。 并且是List接口的两种不同的实现。用双向链表实现它。ArrayList用动态调整大小的数组实现它。 与标准的链表和数组操作一样,各种方法将具有不同的算法运行时。 对于 是O(

  • 问题内容: Java开发受到压力的一个模因总是使用ArrayList而不是Vector。不推荐使用vector。可能是正确的,但是Vector和Hashtable具有同步的优点。 我正在使用面向大量并发的应用程序,使用像Vector一样同步的对象是否有益?看来他们有自己的位置? 问题答案: Vector和Hashtable的问题在于它们仅在本地同步。它们不会在并发应用程序中中断(就像在损坏的数据中

  • 我需要一个“列表”或“地图”,。。。此列表将从另一个ArrayList中添加。当A的参数等于时,对象A被视为等于另一个对象。 我的问题是我只想添加一个列表中不存在的对象。我想知道这两种实施方案之间的区别。使用ArrayList或HashMap 哪种方法可以更快地添加大量对象(超过1000个对象,或更多对象)有更好的模式解决我的问题吗???