将Map <string,string =“”>转换为List <namevaluepair> - 这是最有效的吗?</namevaluepair> </string,>

时间:2014-11-15 03:52:12

标签: java

我有Map<String, String> pairs并希望将其转换为ArrayListNameValuePair个对象。这是执行转换的最佳方式吗?

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);
}

2 个答案:

答案 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;
}