I have a double
as the value in hashmap with the key as a String. If I update the variable that was added as a value to the hashmap independently, instead of updating it in the hashmap, the updated value does not get reflected. That is when I use the key to get the value I get the value as 0.0 instead of the updated value. I am not able to understand why this happens. Please throw some light on this. Also, is there some other way of updating the value in hashmap by updating the variable. A sample code of what I am talking about is below:
import java.util.HashMap;
public class TestDouble{
public Double d1 = 0.0;
public Double d2 = 0.0;
public Double d3 = 0.0;
private HashMap<String,Double> hm;
public TestDouble(){
hm = new HashMap<String,Double>();
hm.put("D1",d1);
hm.put("D2",d2);
hm.put("D3",d3);
}
public void updateD1(double d){
d1 = d;
}
public void updateD2(double d){
d2 = d;
}
public void updateD3(double d){
d3 = d;
}
public Double getValue(String key){
Double val = (Double)hm.get(key);
return val;
}
public static void main(String args[]){
TestDouble td =new TestDouble();
td.updateD1(10.10);
td.updateD2(20.20);
td.updateD3(30.30);
System.out.println("Value of D1 from HashMap = "+td.getValue("D1")+" from actual variable = "+td.d1);
System.out.println("Value of D2 from HashMap = "+td.getValue("D2")+" from actual variable = "+td.d2);
System.out.println("Value of D3 from HashMap = "+td.getValue("D3")+" from actual variable = "+td.d3);
}
}
The output I get is:
Value of D1 from HashMap = 0.0 from actual variable = 10.1
Value of D2 from HashMap = 0.0 from actual variable = 20.2
Value of D3 from HashMap = 0.0 from actual variable = 30.3
Double
is immutable. You can not update its value. Instead you can reference to another instance of a Double
d1
has a reference to a 0d
:
Double d1 = 0d;
If we do another initialization it will be referencing another value:
d1 = 1d;
On the other hand HashMap
is mutable, i.e. its internal state can be changed:
Map<String, Double> map = new HashMap<String, Double>();
map.put("first", 0d);
map.put("first", 1d);
System.out.println("first = " + map.get("first"));
The output will be:
first = 1.00
Bear in mind that we have replaced the value associated with the key first
, it is not updated.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With