Java 发生树图

Java 发生树图,java,data-structures,treemap,Java,Data Structures,Treemap,我有一个树形图,上面有这样的单词 TreeMap <String,Integer> occurrence = new TreeMap <String,Integer>(); TreeMap事件=newtreemap(); 字符串=字 整数=发生的数量 如何获取最大出现次数-整数,然后将字符串映射到最大出现次数 您必须迭代地图并线性搜索它。TreeMap是按键排序的,而不是按值排序的。您必须遍历映射并线性搜索它。TreeMap按键排序,而不是按值排序。您可以使用自定义比

我有一个树形图,上面有这样的单词

TreeMap <String,Integer> occurrence = new TreeMap <String,Integer>();
TreeMap事件=newtreemap();
字符串=字

整数=发生的数量


如何获取最大出现次数-整数,然后将字符串映射到最大出现次数

您必须迭代地图并线性搜索它。
TreeMap
是按键排序的,而不是按值排序的。

您必须遍历映射并线性搜索它。
TreeMap
按键排序,而不是按值排序。

您可以使用自定义比较器对地图的键集使用
Collections.max
,以获得最大的条目:

String highestOccurrence = Collections.max(occurrence.keySet(), 
  new Comparator<String>() {
    public int compare(String a, String b) {
       return occurrence.get(a).compareTo(occurrence.get(b));
    }
});
String highestOccurrence=Collections.max(occurrence.keySet(),
新比较器(){
公共整数比较(字符串a、字符串b){
返回occurrence.get(a).compareTo(occurrence.get(b));
}
});

这为您封装了迭代本身,但在幕后它仍然是一个线性搜索。

您可以使用带有自定义比较器的地图键集使用
Collections.max
,以获得最大的条目:

String highestOccurrence = Collections.max(occurrence.keySet(), 
  new Comparator<String>() {
    public int compare(String a, String b) {
       return occurrence.get(a).compareTo(occurrence.get(b));
    }
});
String highestOccurrence=Collections.max(occurrence.keySet(),
新比较器(){
公共整数比较(字符串a、字符串b){
返回occurrence.get(a).compareTo(occurrence.get(b));
}
});

这为您封装了迭代本身,但在幕后它仍然是一个线性搜索。

。。。或者,如果您发现自己需要经常按频率查找某些内容,您应该更改数据结构。。。。或者,如果您发现自己需要经常按频率查找某些内容,您应该更改您的数据结构。@Thomas:不,我指的是键集@释放:比较器通过获取两个字符串键来工作,但它不会对它们进行比较,而是从现有的
映射中获取相应的出现计数(
Integer
),并返回比较这些值的结果。@Thomas:不,我指的是键集@释放:比较器通过获取两个字符串键来工作,但它不会对它们进行比较,而是从现有的
映射中获取相应的出现计数(
Integer
),并返回比较这些值的结果。