相对于java

时间:2015-08-02 15:20:47

标签: java dictionary

我创建了一个地图,最终将一条消息丢弃到队列,即队列中的消息丢弃现在是地图类型,但现在地图包含以下键值对

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

有没有其他方法可以让我在循环中适应它,第三个键应该动态更改

2 个答案:

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