使用谷歌番石榴查找表

时间:2014-02-02 16:09:27

标签: hashmap guava lookup-tables

我是Java新手。我要求在内存中保存查找表(缩写及其扩展)。我在考虑使用Java哈希地图。但我想知道这是否真的是最好的方法。 此外,如果Google Guava中有任何等效库,则需要相同的库存。 我希望它能够优化并且非常有效率w.r.t时间和记忆

1 个答案:

答案 0 :(得分:3)

使用Maps

地图确实很好,如下所示。

显然,现在关注性能或内存消耗还有点早,如果我们在实际用例上没有更多的上下文,我们就无法真正帮助你。

在Pure Java中

final Map<String, String> lookup = new HashMap<>();

lookup.put("IANAL", "I Ain't A Lawyer");
lookup.put("IMHO", "In My Humble Opinion");

请注意,several implementationsMap interface,或者您可以自己编写。{/ p>

使用Google Guava

如果你想要一个不可变的地图:

final Map<String, String> lookup = ImmutableMap.<String, String>builder()
    .put("IANAL", "I Ain't A Lawyer")
    .put("IMHO", "In My Humble Opinion")
    .build();

检索数据

然后用它来查找缩写:

// retrieval:
if (lookup.containsKey("IMHO")) {
  final String value = lookup.get("IMHO");

  /* do stuff */
}

使用Enums

我说的是替代品......

如果您在编码时知道键/值对将是什么,那么最好使用Java枚举:

class Abbrevations {
  IANAL  ("I Ain't A Lawyer")
  IMHO   ("In My Humble Opinion");

  private final String value;

  private Abbreviations(final String value) {
    this.value = value;
  }

  public String getValue() {
    return (value);
  }

}

然后,您可以直接查找值,即通过执行以下操作:

Abbreviations.IMHO.getValue()

或者使用:

Abbreviations.valueOf("IMHO).getValue()

考虑到您在学习过程中的位置,我建议您按照链接阅读Java教程并实施示例。