我有这个代码,但它似乎过度写了一个参数而我最终只得到一个myImages
参数,无论我在imagesList
有没有办法将许多对象放在具有相同名称的Map中?
for(String imagePath: imagesList){
File imageFile = new File(imagePath);
params.put("myImages", imageFile);
}
修改 我必须使用地图,因为我用来制作多部分POST请求的库要求我将文件放在地图中
答案 0 :(得分:3)
您需要将集合用作Map
值。
Map
存储唯一键 - &gt;值映射,因此再次放置相同的值只会覆盖它。您可以使用Map<String, Collection<File>>
,如此:
final Map<String, Collection<File>> myMap = new HashMap<String, Collection<File>>();
//...
Collection<File> files = myMap.get("myImages");
if(files == null) {
files = new LinkedList<File>();
myMap.put("myImages", files);
}
for(String imagePath: imagesList){
File imageFile = new File(imagePath);
files.add(imageFile);
}
或者您可以考虑使用Guava之类的Multimap
实施。
答案 1 :(得分:1)
正如其他人提到的那样,使用Guava的Multimap
,它允许您将多个值与单个键相关联,例如:
Multimap<String, String> multimap = ArrayListMultimap.create();
multimap.put("myImages", file1);
multimap.put("myImages", file2);
multimap.put("myImages", file3);
Collection<File> images = multimap.get("myImages");