我有一个嵌套的哈希映射,我不知道如何将密钥转换为double。我必须转换它们,因为稍后我必须做一些计算。无论如何转换他们。我这样做的原因是因为我想将三个元素映射在一起:半径,θ和振幅。当我从一个特定格式的图像中读取它时,我想在哈希映射中保存它(我发现它最方便,因为它映射出元素)。所以我尝试了列表和数组列表,但我无法保存三个元素,所以我使用了嵌套的哈希映射。
这是我的代码:
// create a Map()
original = new LinkedHashMap<List<RadTheta>,String>();
List<RadTheta> list = new ArrayList<RadTheta>();
// create a Map()
for(int i =0; i< 256;i++){
for(int y=0; y< 256; y++){
//reading in the values.
String x = image.getLocationAsString(i, y);
String n = image.getValueAsString(i, y);
//Parsing them into "key" and "value".
String delim = ", value=";
String [] tokens = n.split(delim);
double num = Double.parseDouble(tokens[1]);
String stringNum = String.valueOf(num);
//System.out.println(num);
String [] t = x.split("r=");
String[] b = t[1].split(" mm/c");
//System.out.print("Meet b: "+b[0]);
double radius = Double.parseDouble(b[0]);
String stringRad = String.valueOf(radius);
//System.out.print("The radius: "+radius);
String [] split = x.split("theta= ");
String [] split2 = split[1].split(Character.toString(IJ.degreeSymbol));
double theta = Double.parseDouble(split2[0]);
//System.out.println(" theta: "+theta);
String stringTheta = String.valueOf(theta);
RadTheta rad = new RadTheta(radius, theta);
list.add(rad);
original.put(list, stringNum);
//System.out.println(stringRad+" theta= "+stringTheta+" value= "+stringNum);
}
}
这里我迭代哈希映射,我想将键(radius,theta)值转换为double,因为我已经对它们进行了一些计算。有没有办法转换它?
public void outputData(PrintWriter write){
write.println("Radius" +" Theta "+" Amplitude");
saveData();
Iterator iter = original.entrySet().iterator();
while(iter.hasNext()){
Map.Entry pairs = (Map.Entry)iter.next();
//This is the problem-------------------------------
double currKey = Double.parseDouble(pairs.getKey());
double currValue = Double.parseDouble((String) pairs.getValue());
write.println(currKey +" "+currValue);
System.out.println(pairs.getKey() + " = "+ pairs.getValue());
}
}
答案 0 :(得分:2)
您应该创建一个包含3个双打的类,并使用该类的列表:
class Value {
double theta;
double radius;
double amp;
}
List<Value> values = new ArrayList();
// fill list with values
for (Value val: values) {
System.out.println("Theta="+val.theta+", Radius="+val.radius+", Amp="+val.amp);
}
答案 1 :(得分:0)
只需转换地图中的键和值,就可以看出你正在做什么。这是一个非常简单的代码片段,就像你想要做的那样。
public static void main(String[] args) {
Map<String, String> myMap = new HashMap<String, String>();
myMap.put("1.123456", "-1.123456");
myMap.put("2.123456", "-2.123456");
for(String keys : myMap.keySet()){
double keyDouble = Double.parseDouble(keys);
double valueDouble = Double.parseDouble(myMap.get(keys));
System.out.println(String.format("Key: %f Value: %f", keyDouble, valueDouble));
}
}
如果您的工作不正常,可以发布错误吗?另请遵循评论中关于不使用地图作为关键字的建议。