I was trying to do an exercise creating a PhoneBook using HashMap.
However I see my addPhone method doesn't add a new phone to my PhoneBook pb i.e. data.put(name, num); method inside my addPhone doesn't put the data into the HashMap data.
Can somebody explain me what is wrong here?
UPD
Now I understand it was a mistake, I used containsValue method instead of containsKey. So simple!
But this question is not similar at all to the suggested already existing question. I was not asking Is checking for key existence in HashMap always necessary? I know about the ways to search the HashMap according to the key or to the value. This question is actually caused by a mistake. However I received a very wide and useful answers here. I believe these answers, especially davidxxx's answer is excellent and may be useful for many people.
import java.util.HashMap;
public class PhoneBook {
private HashMap<String, String> data;
public PhoneBook()
{
data = new HashMap<String, String>();
}
public void addPhone(String name, String num)
{
data.put(name, num);
}
//a
public String getPhone(String name){
if(data.containsValue(name)){
return data.get(name);
}
else
return null;
}
//b
public void ToString(){
data.toString();
}
public static void main(String[] args) {
PhoneBook pb = new PhoneBook();
pb.addPhone("shlomi", "12312413yuioyuio24");
pb.addPhone("shlomi1", "1231345345241324");
pb.addPhone("shlomi2", "12312445735671324");
System.out.println(pb.getPhone("shlomi"));
System.out.println(pb.getPhone("blat"));
pb.ToString();
}
}