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);
我正在使用此代码添加它们,但它只是将所有文件添加到第一个子字符串。 请帮帮我......
答案 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;
}
此代码未经过测试。希望这会很好。可能需要根据您的具体要求进行一些修改。