在Java中遍历/打印二叉树映射
我有一个二叉树映射(称为“mainMap”),它把字符串作为键,每个键都有一个内部映射作为它的值对。映射中的此映射包含字符串键和整数值 此主地图的目的是告诉哪个单词对应于哪个文件及其频率。 e、 g:如果“猫”在“Arnold.txt”中出现了14次,在“Jake.txt”中出现了6次,那么地图将保持不变 钥匙。。。。猫在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) 访问地
价值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类的方法的代码(或两者兼而有之?)通常二叉树都有对根节点的引用,每个节点都有对左、右节点的引用。但是,您将结构描述为一个映射(其中左/右没有意义),所以我不知道如何使用映射来实现二叉树。