Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中遍历/打印二叉树映射_Java_Dictionary_Printing_Tree_Binary Tree - Fatal编程技术网

在Java中遍历/打印二叉树映射

在Java中遍历/打印二叉树映射,java,dictionary,printing,tree,binary-tree,Java,Dictionary,Printing,Tree,Binary Tree,我有一个二叉树映射(称为“mainMap”),它把字符串作为键,每个键都有一个内部映射作为它的值对。映射中的此映射包含字符串键和整数值 此主地图的目的是告诉哪个单词对应于哪个文件及其频率。 e、 g:如果“猫”在“Arnold.txt”中出现了14次,在“Jake.txt”中出现了6次,那么地图将保持不变 钥匙。。。。猫 价值Map[key…Arnold.txt,value…14], [键…Jake.txt,值…6] 这没问题。我的问题是遍历并打印地图。我想 --对于地图中的每个键 1) 访问地

我有一个二叉树映射(称为“mainMap”),它把字符串作为键,每个键都有一个内部映射作为它的值对。映射中的此映射包含字符串键和整数值

此主地图的目的是告诉哪个单词对应于哪个文件及其频率。 e、 g:如果“猫”在“Arnold.txt”中出现了14次,在“Jake.txt”中出现了6次,那么地图将保持不变

钥匙。。。。猫
价值Map[key…Arnold.txt,value…14], [键…Jake.txt,值…6]

这没问题。我的问题是遍历并打印地图。我想

--对于地图中的每个键
1) 访问地图中的当前键
2) 打印出那把钥匙
3) 检索值(映射)
对于值映射中的每个键
a)打印出钥匙
b)打印出数值
4) 跳过一行,转到下一个键,重复步骤1-4

我想我可以用迭代器。然而,令我尴尬的是,我不知道如何使用我的代码来处理语法。(我没有使用java内置的TreeMap实用程序,我使用的是程序员构建的数据结构

我在二叉树映射代码中有以下方法

public Iterator< KeyValuePair<K, E> > iterator()
{
    Iterator< KeyValuePair<K, E> > itr = new MyTreeItr();
    return itr;
}

public Iterator< KeyValuePair<K, E> > breadthFirstIterator()
{
   Iterator< KeyValuePair<K, E> > itr = new MyBreadthFirstItr();
   return itr;
}
公共迭代器迭代器()
{
迭代器itr=new MyTreeItr();
返回itr;
}
公共迭代器breadthFirstIterator()
{
迭代器itr=newmybreadthfirstitr();
返回itr;
}

我希望这是足够的信息。此打印输出用于测试目的,以确保我的地图正确收集数据。

我不确定树的结构,但根据您描述数据结构的方式(
map
),您可以尝试以下方法:

public void printAll(Map<String, Map<String, Integer>> map){
    for(Map.Entry<String, Map<String,Integer>> entry : map.entrySet()){
        System.out.println(entry.getKey());
        for( Map.Entry<String, Integer> innerEntry : entry.getValue().entrySet()){
             System.out.println(innerEntry.getKey());
             System.out.println(innerEntry.getValue());
        }
        System.out.println("");
    }
}
public void printAll(地图){
对于(Map.Entry:Map.entrySet()){
System.out.println(entry.getKey());
对于(Map.Entry innerEntry:Entry.getValue().entrySet()){
System.out.println(innerEntry.getKey());
System.out.println(innerEntry.getValue());
}
System.out.println(“”);
}
}

你能给我们你的树的代码吗?我们需要知道如何实现它来回答这个问题。当然!你是指我创建mainMap树的代码还是使用BinaryTreeMap类的方法的代码(或两者兼而有之?)通常二叉树都有对根节点的引用,每个节点都有对左、右节点的引用。但是,您将结构描述为一个映射(其中左/右没有意义),所以我不知道如何使用映射来实现二叉树。