我有一个hashMap,它存储我的值:
{10997=Event [Numb=0007449001, date=07.02.2008], 10998=Event [Numb=0007449001, date=08.04.2008], ...
正如您所看到的,键是一个整数,值是一个Event Object,它有一个数值和一个日期,保存为String。
我想将地图的数值与另一个值的if值进行比较。
我试过了:
if(numericVal==eventMap.get(i).toString()) {
然而,这确实不起作用。如何轻松地从HashMap和Object中获取值?
感谢您的回答!
更新
很容易,我的意思是以绩效为导向,因为我必须处理a lot
的值。
答案 0 :(得分:1)
首先关闭;不要将String
与==
使用equalsIgnoreCase()
进行比较(如果外壳很重要,则只需equals()
)
第二;考虑为Event
compareTo()
提供一个equals()
和hashCode()
。
一旦你掌握了组件以及它们应该在那里的原因,你就会以更优雅的方式意识到你想要做的事情。
答案 1 :(得分:1)
如果我理解正确,您要尝试比较EventObject
因此,EventObject
必须拥有访问者。
让我们说你的EventObject
看起来像:
public class EventObject {
private String numericValue;
private String date;
public EventObject(String numericValue, String date) {
this.numericValue = numericValue;
this.date = date;
}
public String getNumericValue() {
return numericValue;
}
public void setNumericValue(String numericValue) {
this.numericValue = numericValue;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
}
从那里开始访问numericValue
中的HashMap
应该像以下一样简单:
HashMap<Integer,EventObject> map = new HashMap<>();
map.put(10997,new EventObject("0007449001", "07.02.2008"));
int keyMap = 10997; //for sake of making obvious this is Key and not numericValue
String numValue = hashMap.get(keyMap).getNumericValue();
然后可以通过以下方式进行比较:
if("0007449001".equals(map.get(10997).getNumericValue())) {
System.out.println("The Date I have is: " + map.get(10997).getDate());
}
哪能得到你:
The Date I have is: 07.02.2008