Новое на Java 8, и я не могу понять это. У меня есть две карты типа TreeMap<Long, Integer>
, одна называется patternMap
, а другая answerMap
.Как проверить, является ли TreeMap подкапом другой TreeMap в Java
patternMap
жестко закодировано искать определенный шаблон пар ключ-значение, так что есть много patternMap
«s, и их размер всегда меньше или равна answerMap
. Я хотел бы проверить, какие patternMap
s являются совпадением в answerMap
, и я имею в виду, что мне нужно точное совпадение по ключу и значению как, так и не только.
Я не могу использовать метод submap
, потому что patternMap
может не иметь непрерывного диапазона ключей. Очевидным способом является пройти через patternMap
и проверить каждый объект Map.Entry
с помощью метода equals
. Тем не менее, у меня есть много patternMap
для проверки на конкретный answerMap
, поэтому мне любопытно узнать, есть ли лучший способ, возможно, используя lambdas/streams. Я также не могу изменить answerMap
или patternMap
, так что это должна быть не мутирующая функция. Я использую TreeMap
, потому что заказ имеет важное значение для приложения.
Там нет кода здесь, потому что я не нашел способ сделать это, но псевдо-код будет выглядеть следующим образом:
for every patternMap in the Collection {
if answerMap contains patternMap, make a note
}
EDIT: Вот некоторые определения (это не работает код , но мы надеемся, делает вопрос яснее:
private static final TreeMap<Long, Integer> patternMap1;
private static final TreeMap<Long, Integer> patternMap2;
private static final ArrayList<TreeMap> listOfPatternMaps;
private TreeMap<Long, Integer> answerMap;
private Set<TreeMap<Long, Integer>> findPatterns(TreeMap answerMap) {
this.answerMap = answerMap;
for(patternMap : listOfPatternMaps) {
if answerMap contains patternMap {
make a note
}
}
return setOfMatchedPatterns;
}
Когда вы делаете 'если answerMap содержит patternMap', это относится ко всем парам ключ-значение в шаблоне шаблонов, соответствующих некоторому подмножеству answerMap? – smac89
Было бы полезно увидеть определения answerMap и patternMap, видя, что фактический код лучше, чем чтение об этом. –
Возможный дубликат [Объединить несколько коллекций в одну логическую коллекцию?] (Http://stackoverflow.com/questions/4896662/combine-multiple-collections-into-a-single-logical-collection) – smac89