java - 为什么HBase使用NavigableMap<Cell, Cell>来存储Cell?

标签 java jvm hbase

让键和值相同有什么意义? JVM 会优化内存并使它们在堆中仅一份吗?

最佳答案

Map<T, T>通常用于实现Set<T>具有与背景图相同的属性。例如。如果映射是线程安全的,则相应的集合也将是线程安全的。如果 map 可导航,则该集合也将可导航,等等。

在键和值部分中保留元素提供了一种获取存储在集合中的精确实例的方法。以下是此模式的一些典型用例。

  • 获取规范对象。想想类似String.intern()的东西但对于任意对象。实习可以通过Map<T, T>轻松实现:

    T existing = map.putIfAbsent(obj, obj);
    return existing != null ? existing : obj;
    
  • 将可变对象存储在集合中。如果要修改现有对象,则由 Map<T, T> 支持的集合将再次救援:

    T existing = map.get(key);
    if (existing != null) {
        existing.mutate();
    }
    

据我了解,并发 NavigableMap<Cell, Cell>在 HBase 中用于实现具有上述属性的并发可导航单元集。

请注意,此类映射中的键和值只是对同一对象的两个引用。对象本身不会被复制。

关于java - 为什么HBase使用NavigableMap<Cell, Cell>来存储Cell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51920369/

相关文章:

java - 有没有办法从 hdfs 读取 mapdb map ?

java - BigDecimal 到字符串

java - 扩充 java 集合以获得区间树

linux - Jenkins 和 chalice : Error initializing VM

java - 如何在 JVM run 调用之间保留大型 Java 对象

hadoop - HBASE有哪些性能提升技术?

JAVAFX-8 取消操作 使用 Javafx 中 controlfx 的对话框关闭舞台?

hadoop - sqoop可以同时向hive和hbase写入数据吗

hadoop - 将文本文件读入Hbase MapReduce并将其存储到HTable

java - 有没有办法判断一个类是否已经加载到jvm中?