将 null 值保存为多个键,其中 null 具有单一含义

save null values as multiple keys where null has a single meaning

我需要一个多键映射并且我想使用空值作为键。我正在使用不允许空键的 HashBasedTable。

Table<String, String, JsonObject> table = HashBasedTable.create();
String key1= null, key2= null;
table.put(key1, key2, value);

我怎样才能达到同样的效果。请帮忙。谢谢

您可以使用 null object,在这种情况下,您知道的字符串不属于可能的字符串集(例如 "Unknown"):

Table<String, String, JsonObject> table = HashBasedTable.create();
String key1 = MoreObjects.firstNonNull(realKey1, "Unknown"),
        key2 = MoreObjects.firstNonNull(realKey2, "Unknown");
table.put(key1, key2, value);

你也可以使用 Optional<String> 来包装你的键,然后你的空对象变成 Optional.empty() (或者 Optional.absent() 如果你使用 Guava 的 Optional):

Table<Optional<String>, Optional<String>, JsonObject> table = HashBasedTable.create();
Optional<String> key1 = Optional.ofNullable(realKey1),
        key2 = Optional.ofNullable(realKey2);
table.put(key1, key2, value);