何时在LinkedList或ArrayList上使用HashMap,反之亦然
2022-08-31 10:56:53
为什么我们不能总是使用HashMap,即使它在添加,删除操作方面比ArrayList或LinkedList更有效,也不管元素的数量如何。
我用谷歌搜索了它并找到了一些原因,但是使用HashMap总是有一个解决方法,其优点仍然存在。
为什么我们不能总是使用HashMap,即使它在添加,删除操作方面比ArrayList或LinkedList更有效,也不管元素的数量如何。
我用谷歌搜索了它并找到了一些原因,但是使用HashMap总是有一个解决方法,其优点仍然存在。
列表表示元素的顺序。映射用于表示键/值对的集合。
虽然您可以将地图用作列表,但这样做有一些明显的缺点。
维护顺序: - 按定义对列表进行排序。添加项,然后可以按插入项的顺序循环访问列表。将项目添加到 HashMap 时,不能保证按放置项目的相同顺序检索项目。像LinkedHashMap这样的HashMap的子类将保持顺序,但通常不能用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);
希望这有帮助,
列表和地图是不同的数据结构。当您想要将键与值关联时,将使用映射,而 Lists 是有序集合。
Map 是 Java Collection Framework 中的一个接口,HashMap 是 Map 接口的一个实现。HashMap 对于基于键定位值以及基于键插入和删除值非常有效。哈希映射的条目未排序。
ArrayList 和 LinkedList 是 List 接口的实现。LinkedList提供顺序访问,并且在列表中插入和删除元素时通常更有效,但是,在访问列表中的元素时效率较低。ArrayList 提供随机访问,在访问元素时效率更高,但在插入和删除元素时通常较慢。