第一次定义Iterator,对他进行循环,则第二次再用的时候还要重新定义一次,例如下面的实例
public HashMap normalization(HashMap parMap) //对矩阵以列为单位进行归一化,即对每一个lengthWeightMap进行归一化
{
Iterator it=parMap.entrySet().iterator(); //对lengthWeightMap中元素进行遍历
double sumOfSqr=0;
while(it.hasNext())
{
Map.Entry entry =(Map.Entry)it.next();
Object val=entry.getValue();
double v= ((Integer) val).intValue();
sumOfSqr+=v*v; //各个元素的平方和
}
double sqrtOfSum=Math.sqrt(sumOfSqr); //平方的开方根
it=parMap.entrySet().iterator();
while(it.hasNext())
{
Map.Entry entry =(Map.Entry)it.next();
Object val=entry.getValue();
double v= ((Integer) val).intValue();
try
{
v=v/sqrtOfSum;
}
catch(ArithmeticException e)
{
System.out.println("算数异常");
}
return parMap;
}
}
本文介绍了一种使用Java对HashMap中的数据进行归一化的处理方法。通过两次遍历HashMap来计算元素平方和并据此调整元素值,确保数据标准化的同时避免了单一迭代器多次使用的问题。
146

被折叠的 条评论
为什么被折叠?



