73 java arrays linked-list arraylist hashmap
我们不能总是使用HashMap的原因是什么,即使它在添加,删除操作方面比ArrayList或LinkedList更有效,也与元素的数量无关.
我用Google搜索并发现了一些原因,但总是有一个使用HashMap的解决方法,优势仍然存在.
pol*_*ter 92
列表表示元素的顺序排序.地图用于表示键/值对的集合.
虽然您可以使用地图作为列表,但这样做有一些明确的缺点.
维护订单: - 按订单定义列表.您添加项目,然后您可以按插入项目的顺序遍历列表.当您向HashMap添加项目时,不能保证按照您放入它们的顺序检索项目.HotMap的子类如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
Run Code Online (Sandbox Code Playgroud)
集合功能 通过Collections类可以为列表提供一些很棒的实用程序功能.例如 ...
// Randomize the list
Collections.shuffle(myList);
// Sort the list
Collections.sort(myList, myComparator);
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助,
jaz*_*awg 33
列表和地图是不同的数据结构.当您想要将键与值相关联时,映射用于列表,而列表是有序集合.
Map是Java Collection Framework中的一个接口,HashMap是Map接口的一个实现.HashMap可以有效地根据键定位值,并根据键插入和删除值.HashMap的条目不是有序的.
ArrayList和LinkedList是List接口的实现.LinkedList提供顺序访问,并且通常在列表中插入和删除元素时更有效,但是,访问列表中的元素效率较低.ArrayList提供随机访问,在访问元素方面效率更高,但插入和删除元素的速度通常较慢.