我在这里添加我的答案因为我可以看到其他答案中存在一些混淆。
首先,HashMap是Map接口的实现,而List只是一个需要实现的接口。 ArrayList就是这样的一个实现。
当您想要将某些键与特定值相关联时使用地图。例如,通用JSON解析器将JSON对象存储在HashMap中是有意义的。另一方面,当你想要有一个有序的项目集合时,使用列表。
我想澄清的另一件事是,与@KarlRichter提到的相反,如果执行正确,List的实现将访问O(1)中的元素,而不是O(n)中的元素, 。他似乎已将List与LinkedList混淆。 A HashMap,通常会增加散列的开销,所以它可能会比List慢(在大多数情况下不明显),但它在技术上仍然保持O(1)。
但是,List的用途与Map的用途不同,因此比较仍然不正确。
在你的情况,你不能用HashMap取代List,因为,如图所示here,URLEncodedFormEntity只接受所有的构造List extends NameValuePair>或Iterable extends NameValuePair>。
如果你必须使用一个HashMap,你可以做一些转换,如下所示:
public List hashMapToNameValuePairList(HashMap map) {
List list = new ArrayList();
for (Map.Entry entry : map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
list.add(new BasicNameValuePair(key, value));
}
return list;
}
这样,那么,你从HashMap中创建您的列表如下图所示:
List list = hashMapToNameValuePairList(yourHashMap);