根据Java8中的这个链接,为了避免在map(HashMap, LinkedHashMap, and Converter tHashMap
)中的冲突,使用平衡树来实现,而不是LinkedList
。
那么,如果:
>
TreeMap
和其他映射(HashMap、LinkedHashMap和ConcurrentHashMap
)都是使用自平衡树实现的,因为最坏情况下的可访问性是相同的
条目的排序
我可以实现如下:
public <K extends Comparable,V extends Comparable> LinkedHashMap<K,V> sortByKeys(LinkedHashMap<K,V> map){
List<K> keys = new LinkedList<K>(map.keySet());
Collections.sort(keys, (Comparator<? super K>) new Comparator<String>() {
@Override
public int compare(String first, String second) {
return first.compareTo(second);
}
});
}
除了排序和可访问性,TreeMap
的其他属性是什么?
>
在jdk7和旧jdk中重新计算桶索引时大小
在jdk7的HasMap中放入这样的内容时,只有一个bucket。那么查找节点是O(N)。
class Foo{
int hashCode(){
return 0;
}
}
Foo first=new Foo();
Foo last=new Foo();
map.put(first,"anything");
map.put(last,"anything");
map.get(last | first);// O(N)
在jdk8中,当把这样的东西放到HasMap中时,只有一个bucket,但是实现的键是可比较的。然后查找节点是O(log(N)),但是如果i
相同,则查找节点将回退到O(N)。
class Foo implements Comparable<Foo> {
private int i;
public Foo(int i) {
this.i = i;
}
public int hashCode() {
return 0;
}
@Override
public int compareTo(Foo that) {
return i - that.i;
}
}
Foo first=new Foo(1);
Foo last=new Foo(2);
map.put(first,"anything");
for(int i=2;i<threshold;i++)
map.put(new Foo(i + 1), "anything");
map.put(last,"anything");
map.get(last | first);// O(log(N))
排序LinkedHashMap您可以改为创建TreeMap实例,因为Map.keySet()返回无序集而不是列表,因此您无法通过排序其键对地图进行排序。
public <K extends Comparable<? super K>, V> Map<K, V> sortByKeys(Map<K, V> map) {
return new TreeMap<K, V>(map);
}
产出: 请提供2个方法将产生不同输出的例子。
TreeMap是数据树的直观表示,其中每个节点可以有零个或多个子节点,以及一个父节点(根节点除外)。 每个节点都显示为一个矩形,可以根据我们指定的值进行调整大小和着色。 尺寸和颜色相对于图中的所有其他节点进行估值。 以下是树形图图表的示例。 我们已经在Google Charts Configuration Syntax一章中看到了用于绘制图表的配置 。 现在,让我们看一个TreeMap图表的示例。
我对这两种算法的时间复杂度感到困惑。 usingTreeMap算法的时间复杂度正确吗?我知道在treemap中插入时间是log(n ),但是如果我们遍历一个包含10个元素的数组,它会变成nlog(n)吗?
在IDE上执行程序时,它不会给出任何输出。我原以为它会给出。
问题内容: import java.util.*; 输出: 我想知道为什么我们在第一条注释行中得到空值,而第二条注释行中却显示出非空值。 编辑:@null的版本似乎不起作用。我将代码更改如下: 似乎可行,但我不确定。 问题答案: 我的猜测是您的方法永远不会返回0(表示相等),从而导致该方法找不到匹配项。
TreeMap类使用树实现Map接口。 TreeMap提供了一种以排序顺序存储键/值对的有效方法,并允许快速检索。 您应该注意,与哈希映射不同,树映射保证其元素将按升序键顺序排序。 以下是TreeMap类支持的构造函数列表。 Sr.No. 构造函数和描述 1 TreeMap( ) 此构造函数构造一个空树图,该图将使用其键的自然顺序进行排序。 2 TreeMap(Comparator comp) 此