У меня есть следующий код:
List<Pattern> patterns = Lists.newArrayList(Pattern.compile("blah"), Pattern.compile("blah2"));
Map<Pattern, String> map = new HashMap<Patter, String>();
map.put(patterns.get(0), "1");
map.put(patterns.get(1), "2");
Assert.assertTrue(map.containsKey(patterns.get(0)));
Утверждение не выполняется!
С чего бы это?Во-первых, меня удивляет, что класс Pattern
не реализует equals
и hashCode
на основе шаблона.Но даже если это не так, Object
не использует адрес памяти для hashCode
и equals
, поэтому, пока я передаю один и тот же экземпляр Object
, ключ должен быть найден?
Редактировать: Извините, ребята.Вот что у меня на самом деле было.Забыл, что transform
будет создавать новый экземпляр при каждом доступе.
List<Pattern> patterns = Lists.transform(Lists.newArrayList("blah1", "blah2"), toPattern);