可能重复:
如何迭代Map中的每个条目?
我想迭代a TreeMap,并且对于具有特定值的所有键,我希望将它们添加到新的TreeMap.我怎样才能做到这一点?
说明| 一种Java程序,用于读取文本文件并按字母顺序打印每个唯一单词以及单词在文本中出现的次数.
程序应该声明一个类型的变量Map<String, Integer>来存储单词和相应的出现频率.但是哪种具体类型呢?TreeMap<String, Number>还是HashMap<String, Number>?
输入应转换为小写.
一个单词不包含以下任何字符: \t\t\n]f.,!?:;\"()'
示例输出|
Word Frequency
a 1
and 5
appearances 1
as 1
.
.
.
Run Code Online (Sandbox Code Playgroud)
备注| 我知道,我已经在Perl中看到了大致两行代码的优雅解决方案.但是,我想在Java中看到它.
编辑:哦,是的,使用这些结构之一显示实现是有帮助的(在Java中).
在Java中,您可以构建一个ArrayList包含项目,然后调用:
Collections.sort(list, comparator);
Run Code Online (Sandbox Code Playgroud)
无论如何在列表时传递比较器,创建就像你可以做的那样TreeMap?
目标是能够将一个元素添加到列表中,而不是将其自动附加到列表的末尾,列表将根据其自身排序Comparator并将新元素插入由该列表确定的索引处Comparator.因此,基本上列表可能必须对添加的每个新元素进行重新排序.
无论如何,Comparator通过这种方式或通过其他类似手段实现这一目标?
我想从Map获取随机密钥及其各自的值.这个想法是随机生成器会选择一个键并显示该值.棘手的部分是键和值都是字符串,例如myMap.put("Geddy", "Lee").
似乎它们都让你检索最小值,这是我对Prim算法所需要的,并强制我删除并重新插入一个键来更新它的值.使用一个优于另一个是否有任何优势,不仅仅是这个例子,但一般来说?
我在JAVA中浏览了TreeMap的源代码.根据JAVA doc:
基于红黑树的NavigableMap实现.地图根据其键的自然顺序进行排序,或者根据使用的构造函数在地图创建时提供的比较器进行排序.
此实现为containsKey,get,put和remove操作提供有保证的log(n)时间成本.算法是Cormen,Leiserson和Rivest的算法导论中的算法的改编.
在源代码中,我发现内部类条目被用作节点.
static final class Entry<K,V> implements Map.Entry<K,V> {
K key;
V value;
Entry<K,V> left = null;
Entry<K,V> right = null;
Entry<K,V> parent;
boolean color = BLACK;
....
Run Code Online (Sandbox Code Playgroud)
至于红黑树的定义.从维基百科我发现:
红黑树是一种自平衡二叉搜索树,是计算机科学中使用的数据结构.
通过用两种颜色中的一种(这些通常称为"红色"和"黑色",因此树的名称)绘制每个节点来提供自平衡,使得得到的绘制树满足某些属性.使它变得非常不平衡.修改树时,随后重新排列新树并重新绘制以恢复着色属性.这些属性的设计使得这种重新排列和重新着色可以有效地进行.
我试图分析源代码,但无法理解以下内容:
假设我已经在树中有两个键"C"和"E",然后我添加"D".如何安排节点(使用自然排序).
如何在Java源代码中实现Tree的自我平衡.
我尝试搜索TreeMap的详细实现,但无法找到任何文章,例如我为HashMap找到的以下文章
从昨天起我就挂在这棵树上了:(有人可以帮我下楼......
我需要一个TreeMap的比较器.我应该在我的TreeMap的构造函数中匿名写这个吗?我怎么能写我的比较器.目前,Java不喜欢我的代码(我可以匿名执行此操作吗?):
SortedMap<String, Double> myMap =
new TreeMap<String, Double>(new Comparator<Entry<String, Double>>()
{
public int compare(Entry<String, Double> o1, Entry<String, Double> o2)
{
return o1.getValue().compareTo(o2.getValue());
}
});
Run Code Online (Sandbox Code Playgroud)
我有一些与java.util.concurrent包有关的问题:
为什么在java API中,一方存在非并发TreeMap,另一方存在并发 ConcurrentSkipListMap?
他们为什么不叫呢ConcurrentTreeMap?说a SkipListMap包含一个TreeMap?是否安全?
例如,非并发HashMap有其并发对应物ConcurrentHashMap.为什么不会发生TreeMap?
我一直在使用这个javascript库在网页上创建树形图,效果很好.现在的问题是我需要将它包含在我在服务器端生成的powerpoint演示文稿中(我使用aspose.slides为.net生成powerpoint )
我想到的最简单的事情是尝试以某种方式在服务器上构建树形图并保存为图像(因为将图像添加到powerpoint演示文稿中非常简单)但在谷歌搜索后,我没有看到任何来自C#服务器端的解决方案可以生成树图作为图像.
这样的事情存在于我可以从服务器端C#app创建树图作为图像的地方.
我想TreeMap用Java 创建一个自定义排序顺序.需要根据第二个字符对作为字符串的排序键进行排序.值也是字符串.
示例地图:
Za,FOO
Ab,Bar
Run Code Online (Sandbox Code Playgroud) treemap ×10
java ×9
collections ×2
comparator ×2
hashmap ×2
sorting ×2
asp.net-mvc ×1
c# ×1
concurrency ×1
dictionary ×1
image ×1
list ×1
map ×1
random ×1
sortedmap ×1
string ×1