Как мы сейчас, существует концепция BiMap и multiMap, но есть ли multiBiMap? так что я имею в виду под этим. В multiMap у вас есть отношения «один ко многим» между K и V, один ключ может быть связан с несколькими значениями, отсюда и имя. На карте bi у вас есть пара K, V, которая является двунаправленной, вы также можете получить отношения V, K. Как и две регулярные карты, но синхронизированы. Мне нужна карта с двумя направлениями, в которой вы комбинируете эти две концепции.У нас есть MultiBiMap?
3
A
ответ
12
import java.util.Set;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.SetMultimap;
public class ManyToMany<K, V> {
private final SetMultimap<K, V> keysToValues = HashMultimap.create();
private final SetMultimap<V, K> valuesToKeys = HashMultimap.create();
public Set<V> getValues(K key) {
return keysToValues.get(key);
}
public Set<K> getKeys(V value) {
return valuesToKeys.get(value);
}
public boolean put(K key, V value) {
return keysToValues.put(key, value) && valuesToKeys.put(value, key);
}
public boolean putAll(K key, Iterable<? extends V> values) {
boolean changed = false;
for (V value : values) {
changed = put(key, value) || changed;
}
return changed;
}
}
+0
Я написал что-то подобное немного, но я не люблю тот факт, что у меня было два списка, но это тоже должно работать. –
+0
Я просто не думаю, что концептуально можно получить двунаправленные поисковые запросы, не поддерживая два мультиплекса. – gdejohn
Смежные вопросы
- 1. Почему у нас есть Redis, когда у нас есть временные таблицы MySQL?
- 2. Возможно, у нас есть резервная копия таблицы
- 3. Symfony2 подсчитайте, сколько маршрута у нас есть
- 4. Есть ли у нас RopeJoint в JBox2d?
- 5. Почему у нас есть закрытие в JavaScript?
- 6. Почему у нас есть argv [2] [0]
- 7. У нас есть многостраничное jpeg-изображение?
- 8. У нас есть набор S потенциальных инвестиций
- 9. C# Почему у нас есть финализаторы
- 10. Есть ли у нас больше ошибок (сообщений)?
- 11. у нас есть вложенный тег html?
- 12. Почему у нас есть Function.call в javascript?
- 13. Почему у нас есть нестатические функции/методы?
- 14. У нас есть модуль FilteringSelect в angularjs
- 15. Сколько стеков у нас есть в приложениях
- 16. Сколько утечек памяти у нас есть?
- 17. Есть ли у нас автопрокат в Perl?
- 18. cfindex, сколько пользовательских полей у нас есть
- 19. У нас есть напоминания в окнах 8
- 20. Есть ли у нас целый ряд мероприятий?
- 21. Почему у нас есть две версии Java?
- 22. Есть ли у нас скин для windows?
- 23. Как у нас есть философия модульного тестирования?
- 24. у нас есть org.eclipse.jface.dialogs.InputDialog с combobox
- 25. Почему у нас есть правила пользователя?
- 26. Есть ли у нас публичные коллекции Postman?
- 27. У нас есть getElementsByClassName в javascript?
- 28. У нас есть функция сортировки в .net
- 29. У нас есть токен в BlackBerry push?
- 30. У нас есть функция XQuery abort()
, если вам не нужно, чтобы сохранить реальные пары, вы можете получить тот же эффект (или реализовать свой собственный), используя два multimaps (один идти в каждую сторону) – Thayne
хорошо этот вопрос я хотел что-то простое, как это : multiBiMap где, если у вас есть ключ, вы получаете все значения, связанные с этим ключом, и если у вас есть значение, вы можете получить ключ. Но, как вы сказали, его можно будет реализовать. Я просто не хотел изобретать велосипед, если он уже существует. –
Являются ли значения гарантированными уникальными? – Thayne