Java 转换地图<;字符串,字符串>;列出<;NameValuePair>;-这是最有效的吗?
我有一个Java 转换地图<;字符串,字符串>;列出<;NameValuePair>;-这是最有效的吗?,java,Java,我有一个映射对,希望将其转换为带有NameValuePair对象的ArrayList。这是执行转换的最佳方式吗 List<NameValuePair> nvpList = new ArrayList<NameValuePair>(2); for(Map.Entry<String, String> entry : pairs.entrySet()){ NameValuePair n = new NameValuePair(entry.getKey(), en
映射对
,希望将其转换为带有NameValuePair
对象的ArrayList
。这是执行转换的最佳方式吗
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);
}
List nvpList=newarraylist(2);
for(Map.Entry:pairs.entrySet()){
NameValuePair n=新的NameValuePair(entry.getKey(),entry.getValue());
nvpList.add(n);
}
如果必须使用NameValuePair,则选择yes。我唯一建议的是创建成对大小的ArrayList.size(),以避免ArrayList在内部数组逐渐增长时多次调整大小的开销:
List<NameValuePair> nvpList = new ArrayList<>(pairs.size());
for (Map.Entry<String, String> entry : pairs.entrySet()) {
nvpList.add(new NameValuePair(entry.getKey(), entry.getValue()));
}
List nvpList=newarraylist(pairs.size());
for(Map.Entry:pairs.entrySet()){
添加(新的NameValuePair(entry.getKey(),entry.getValue());
}
对于未来的读者:
@Locoboy您的代码片段需要一些更正,@leffebrene的回答将失败,因为您无法实例化接口
需要更正此行:
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;
}
public List convertToNameValuePair(映射对){
List nvpList=newarraylist(pairs.size());
for(Map.Entry:pairs.entrySet()){
添加(新的BasicNameValuePair(entry.getKey(),entry.getValue());
}
返回nvpList;
}
使用初始容量初始化ArrayList
。哦,是的,这是在没有编译器的情况下编写的。初始容量等于pairs.size()确保有意义。它的Map.Entry,请参阅我的答案。我更需要这样做:httpPost.setEntity(新的UrlEncodedFormEntity(nameValuePairs))代码>这仅适用于库版本>=4.0的情况。对于较低版本(即<4.0),@Leffebrene的答案是正确的(事实上,NameValuePair是一个实现java.io.Serializable的类)。