protected double reCalCenters(Map<Integer, float[]> centerMap) {
        int dimensionNum = centerMap.get(0).length;//获取维数
//        centerList.clear();
        double changeSum = 0;//统计各中心位移的总和
        for (int i = 0; i < clusterNum; i++) {
            //按簇类遍历
            ArrayList<IClusterCalculable> calculableArrayList = clusterMap.get(i);
            float[] newCenter = new float[dimensionNum];
            for (IClusterCalculable vec : calculableArrayList) {
                for (int j = 0; j < dimensionNum; j++) {
                    newCenter[j] += vec.getVecValues()[j];
                }
            }
            float[] centerClusterVec = centerMap.get(i);
            double dist = 0;//单个簇类中心的距离变化量的平方
            for (int k = 0; k < dimensionNum; k++) {
                newCenter[k] = newCenter[k] / calculableArrayList.size();
                dist += Math.pow((centerClusterVec[k] - newCenter[k]), 2);
            }
            centerMap.put(i, newCenter);
            changeSum += dist;
        }
        return changeSum;
    }