SyFy's blog

By SyFy, 7 years ago, In Russian,

Частенько начал натыкаться на необходимость получать по нужному ключу соответствующее значение и наоборот. Для этого приходится использовать что-то вроде этого:

HashMap<String, Integer> hm1;
HashMap<Integer, String> hm2;

Такой вариант меня чаще всего не устраивает по затратам памяти и "лишней" возне с двумя таблицами.

А есть ли какая-то структура данных (встроенная в JAVA), которая позволяет производить такие запросы сохраняя сложность запроса O(1) ?

А если нет встроенной, то какие есть?

Благодарю.

 
 
 
 
  • Vote: I like it  
  • +27
  • Vote: I do not like it  

»
4 years ago, # |
  Vote: I like it 0 Vote: I do not like it

BidiMap in Apache Commons Collections and BiMap in Guava. Although I would prefer latter. You can always just import 1 source file in your project if you don't want to drag the entire collection library (although either of them are widely used and pretty awesome).