在Java中使用哪个集合?

Fra*_*ank 3 java collections

我想将整数映射到字符串,它们是一对一的,例如:

60 : c
61 : c#
62 : d
63 : d#
64 : e
65 : f
66 : f#
Run Code Online (Sandbox Code Playgroud)

但我需要有能力做到以下几点:

  1. 从键获取值:"c"= getValue(60)[给它一个键60,返回字符串值]
  2. 从值获取键:65 = getKey("f")[给它一个字符串值"f",返回一个键]

哪种收集模型最适合这种情况?我问,因为我看了几个,没有人可以做<2>部分.或者我是否必须编写代码来遍历每一对以找到哪个键具有值"f"?

编辑:jdk1.6中没有这样做吗?

Ben*_*aum 6

如果您不想包含commons集合或guava,只需使用两个单独的映射 - 您可以使用简单的foreach循环以编程方式从第一个映射创建反向映射.我建议您设计代码,以便对这些映射的所有访问都是单个类的内部(因为它是一个实现细节,应该从系统的其余部分隐藏).换句话说,不要将这些映射传递给任何方法.然后,如果您以后选择,您可以非常轻松地切换到更合适的集合.


Ara*_*ram 5

你需要的是一个BiMap.google guava库提供此集合.