我创建了一个地图,最终将一条消息丢弃到队列,即队列中的消息丢弃现在是地图类型,但现在地图包含以下键值对
Map(<String , String >) rmap = new HashMap(<String , String >);
rmap.put(ID, 750);
rmap.put(FILELOC,"C:\\ta\\");
rmap.put(FILENAMES,"wer.xls");
现在上面地图的问题在于它是针对wer.xls的单个文件所以现在就说明下面有4个不同的文件
abc.xls
ert.xlsx
gftr.xls
ewrt.xlsx
现在我希望在map上面调用一个循环,其中前两个键值每次都是ID时保持相同,FILELOC对于所有上述4个文件将保持相同,但最后一个键FILENAMES值将随每个seprate而变化excelfile,实现的一种方法是我已经为地图的第三个属性创建了一个列表,但是我不希望这样做,请告诉我如何在地图中放置一个循环,其中前两个属性将保持相同
并且第三个键FILENAMES值会改变这样的东西
rmap.put(FILENAMES,"abc.xls");
rmap.put(FILENAMES,"ert.xlsx");
rmap.put(FILENAMES,"gftr.xls");
rmap.put(FILENAMES,"ewrt.xlsx");
实现此目的的另一种方法是创建4个不同的地图
Map(<String , String >) rmap1 = new HashMap(<String , String >);
rmap1.put(ID, 750);
rmap1.put(FILELOC,"C:\\ta\\");
rmap1.put(FILENAMES,"abc.xls");
Map(<String , String >) rmap2 = new HashMap(<String , String >);
rmap2.put(ID, 750);
rmap2.put(FILELOC,"C:\\ta\\");
rmap2.put(FILENAMES,"ert.xlsx");
Map(<String , String >) rmap3 = new HashMap(<String , String >);
rmap3.put(ID, 750);
rmap3.put(FILELOC,"C:\\ta\\");
rmap3.put(FILENAMES,"gftr.xls");
Map(<String , String >) rmap4 = new HashMap(<String , String >);
rmap4.put(ID, 750);
rmap4.put(FILELOC,"C:\\ta\\");
rmap4.put(FILENAMES,"ewrt.xlsx");
有没有其他方法可以让我在循环中适应它,第三个键应该动态更改
答案 0 :(得分:1)
如果要保持前两个键相同并仅更新键&#34; FILENAMES&#34;使用最新值,然后执行rmap.put(FILENAMES,"latestFileName");
它将保留上次更新的值,但如果要保留所有文件名,则将值作为字符串列表而不是字符串,然后在获取新文件时添加文件名
答案 1 :(得分:0)
这看起来像是应该使用对象而不是地图的情况。例如:
class Entry {
private String id;
private String fileLocation;
private List<String> filenames;
Entry(String id, String fileLocation) {
this.id = id;
this.fileLocation = fileLocation;
}
public Entry addFilename(String filename) {
filenames.add(filename);
}
// ...and getters and such as appropriate...
}
然后只使用Entry
实例而不是Map<String,String>
实例:
Entry entry = new Entry(750, "C:\\ta\\");
entry.addFilename("wer.xls");
entry.addFilename"ert.xlsx");
entry.addFilename"gftr.xls");
entry.addFilename"ewrt.xlsx");
(如果您有多个,请根据需要存储在列表或地图中。)
重新评论循环条目并循环其文件名:假设您有Entry
个实例列表:
List<Entry> list = /*...create and fill in the entries...*/;
要遍历它们,并列出它们以及与它们相关的所有文件名,您将使用嵌套循环:
for (Entry entry : list) {
System.out.println("ID: " + entry.getId());
System.out.println("Location: " + entry.getFileLocation());
for (String filename : entry.getFilenames()) {
System.out.println("File: " + filename);
}
}