从集合中将文件添加到树形图

时间:2015-02-16 12:11:27

标签: java

for (File file : files) {
        if (file.isFile()) {
            String fileName = file.getName().toString();
            System.out.println(fileName);
            String str = fileName.substring(5, 11);
            System.out.println(str);
        }

我使用上面的代码从文件中获取一些子字符串。现在我想根据相应的子字符串使它们成为单独的列表。我怎么能这样做

List<File> group = mapFiles.get(str);
            if (group == null) {
                group = new ArrayList<File>();
                mapFiles.put(str, group);
            }
            group.add(file);

我正在使用此代码添加它们,但它只是将所有文件添加到第一个子字符串。 请帮帮我......

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

    File[] files = /**** list of files */
    HashMap<String, List<File>> hm = new HashMap<String, List<File>>();

    for(File file : files) 
    {
        if (file.isFile()) 
        {
            String fileName = file.getName().toString();
            String str = fileName.substring(5, 11);

            if(hm.containsKey(str))
            {
                hm.get(str).add(file);
            }
            else
            {
                List<File> al = new ArrayList<File>();
                al.add(file);
                hm.put(str, al);
            }
            fileName = null;
            str = null;
        }
    }

要获取单独的文件列表列表,您可以执行以下操作:

public List<List<File>> getFileList(HashMap<String, List<File>> hm)
{
    List<List<File>> list = null;

    if(hm != null)
    {
        list = (ArrayList<List<File>>) hm.values();
    }

    return list;
}

此代码未经过测试。希望这会很好。可能需要根据您的具体要求进行一些修改。