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

时间:2016-11-30 10:06:31

标签: java hashtable guava

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

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

我怎样才能达到同样的目标。请帮忙。感谢

1 个答案:

答案 0 :(得分:0)

您可以使用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>来换行密钥,然后您的null对象变为Optional.empty()(如果您使用Guava的Optional.absent(),则为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);