Java 如何将程序的输出放入Hashmap?
我有一个这样的代码:Java 如何将程序的输出放入Hashmap?,java,hashmap,Java,Hashmap,我有一个这样的代码: public static void displayDirectoryContents(File dir) { try { File[] files = dir.listFiles(); for (File file : files) { if (file.isDirectory() && !file.getName().endsWith(".svn")) { S
public static void displayDirectoryContents(File dir) {
try {
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory() && !file.getName().endsWith(".svn")) {
System.out.println("directory:" + file.getCanonicalPath());
displayDirectoryContents(file);
} else {
System.out.println("file:" + file.getCanonicalPath());
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
现在,有没有办法将结果集放入hashmap?您有很多对象嵌套,因此hashmap可能不是很好的数据结构。我建议引入定制POJO和树状结构:
class Node { String canonicalPath; String type; Node parent; List<Node> children = new ArrayList<>(); }
然后你可以:
displayDirectoryContents(“/dummypath”).forEach(System.out.println)代码>
会给你同样的结果
或到字符串的并发映射
Map res=displayDirectoryContents(“/dummypath”).stream().collect(collector.toConcurrentMap(o->o,o->o))代码>您有很多对象嵌套,因此hashmap可能不是很好的数据结构。我建议引入定制POJO和树状结构:
class Node { String canonicalPath; String type; Node parent; List<Node> children = new ArrayList<>(); }
然后你可以:
displayDirectoryContents(“/dummypath”).forEach(System.out.println)代码>
会给你同样的结果
或到字符串的并发映射
Map res=displayDirectoryContents(“/dummypath”).stream().collect(collector.toConcurrentMap(o->o,o->o))代码>这里的键、值对是什么?不清楚你在问什么,你的问题也不清楚。如果要将某些键与某些值关联,可以使用hashmap。如果您只有一个文件路径列表,那么您没有键/值对。告诉我们您试图实现什么(不仅仅是“将文件路径放入哈希映射”)。我的键和值是相同的,即上面编写的代码的结果。这段代码给出了存储在特定文件夹中的文件及其文件路径(我在这里只发布了部分代码)。因此,无论它给出什么输出,都必须存储在一个哈希映射中,并且键和值都是相同的。请编辑问题,使生成的哈希映射看起来像什么。如果键和值都是相同的,那么存储它们是没有用的。使用HashMap的原因是进行键值查找。如果它们相同,那么您将使用值本身查找值。文件系统是一种树型数据结构。节点是文件和目录,父节点是目录。叶子是文件和空目录。节点值是文件/目录名称这里的键、值对是什么?不清楚你在问什么,你的问题也不清楚。如果要将某些键与某些值关联,可以使用hashmap。如果您只有一个文件路径列表,那么您没有键/值对。告诉我们您试图实现什么(不仅仅是“将文件路径放入哈希映射”)。我的键和值是相同的,即上面编写的代码的结果。这段代码给出了存储在特定文件夹中的文件及其文件路径(我在这里只发布了部分代码)。因此,无论它给出什么输出,都必须存储在一个哈希映射中,并且键和值都是相同的。请编辑问题,使生成的哈希映射看起来像什么。如果键和值都是相同的,那么存储它们是没有用的。使用HashMap的原因是进行键值查找。如果它们相同,那么您将使用值本身查找值。文件系统是一种树型数据结构。节点是文件和目录,父节点是目录。叶子是文件和空目录。节点值是文件/目录名称感谢您的帮助,但我需要的是一个hashmap,这样我就可以比较任何重复的条目。感谢您的帮助,但我需要的是一个hashmap,这样我就可以比较任何重复的条目。
List<String> displayDirectoryContents(File dir) {
List<String> res = new ArrayList();
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory() && !file.getName().endsWith(".svn")) {
res.add("directory:" + file.getCanonicalPath());
res.addAll(displayDirectoryContents(file));
} else {
res.add("file:" + file.getCanonicalPath());
}
}
return res;
}