我有Map<String, String> pairs
并希望将其转换为ArrayList
个NameValuePair
个对象。这是执行转换的最佳方式吗?
List<NameValuePair> nvpList = new ArrayList<NameValuePair>(2);
for(Map.Entry<String, String> entry : pairs.entrySet()){
NameValuePair n = new NameValuePair(entry.getKey(), entry.getValue());
nvpList.add(n);
}
答案 0 :(得分:4)
如果你绝对必须使用NameValuePair,那么肯定。我只建议创建一个大小为pairs.size()的ArrayList,以避免ArrayList在逐渐增长时多次调整内部数组的开销:
List<NameValuePair> nvpList = new ArrayList<>(pairs.size());
for (Map.Entry<String, String> entry : pairs.entrySet()) {
nvpList.add(new NameValuePair(entry.getKey(), entry.getValue()));
}
答案 1 :(得分:2)
对于未来的读者:
@Locoboy您的代码片段需要一些更正,@ LeffeBrune的答案将失败,因为您无法实例化接口。
需要纠正这一行:
nvpList.add(new NameValuePair(entry.getKey(), entry.getValue()));
像这样:
nvpList.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
BasicNameValuePair 类实现了 NameValuePair 接口,因此可以在此处使用。
请参阅以下完整正确的代码段:
public List<NameValuePair> convertToNameValuePair(Map<String, String> pairs) {
List<NameValuePair> nvpList = new ArrayList<>(pairs.size());
for (Map.Entry<String, String> entry : pairs.entrySet()) {
nvpList.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
}
return nvpList;
}