У меня проблема с методом DualHashBidiMap и getKey.Метод DualHashBidiMap и getKey
Я использую Commons Коллекции 4,1
ContainsKey метод возвращает истину для конкретного ключа insterted, но GETKEY метод возвращает нуль для того же ключа;
Key класс имеет суперкласс с равен и хэшем метода перекрытым, чтобы соответствовать по ид собственности.
Главный класс
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
DualHashBidiMap<Observed, Object> map=new DualHashBidiMap<Observed,Object>();
Task t66=new Task();
t66.setId(66);
map.put(t66, "Task66");
Task tFetch=new Task();
tFetch.setId(66);
System.out.println("tFetch present:"+map.containsKey(tFetch));
System.out.println("tFetch Object:"+map.getKey(tFetch));
}
}
это выход
tFetch present:true
tFetch Object:null
Key Класс
public class Task extends Observed{
public void m1(){
System.out.println("Method called !!");
}
}
Ключевые SuperClass
public class Observed extends Observable{
private Integer id;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Override
public boolean equals(Object obj) {
boolean retValue=false;
Observed t=(Observed) obj;
if(t.getId().equals(this.getId())) retValue=true;
return retValue;
}
@Override
public int hashCode() {
int hash = 3;
hash = 53 * hash + (this.getId() != null ? this.getId().hashCode() : 0);
hash = 53 * hash + this.getId();
return hash;
}
}
Tnks всем ..
Хорошо, теперь я понял. Я думал, что метод getKey возвращает ключевой объект по значению ключа. Извините за ошибку и спасибо за объяснение. – Max
Если это ответит на ваш вопрос, отметьте его как ответ, чтобы другие неотвеченные вопросы привлекли внимание – awsome