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;
}