code: protected static Map<Integer, Integer> createCentroidMappings(int centroidNum,
              List<CentroidMapping> allDistance)
      {
          Set<Integer> baseSet = new HashSet<>();
          Set<Integer> targetSet = new HashSet<>();
          Map<Integer, Integer> resultMapping = new TreeMap<>();
          int mappingNum = 0;
  
          // 算出したユークリッド処理リストをソートして使用
          for (CentroidMapping targetDistance : allDistance)
          {
              // 既にマッピングに使用されている場合は省略する。
              if (baseSet.contains(targetDistance.getBaseIndex())
                      || targetSet.contains(targetDistance.getTargetIndex()))
              {
                  continue;
              }
  
              baseSet.add(targetDistance.getBaseIndex());
              targetSet.add(targetDistance.getTargetIndex());
              resultMapping.put(targetDistance.getBaseIndex(), targetDistance.getTargetIndex());
              mappingNum++;
  
              // マッピングが必要数確保できた時点でマッピングを終了
              if (mappingNum >= centroidNum)
              {
                  break;
              }
          }
  
          return resultMapping;
      }
docs: ベース中心点、マージ対象中心点のマッピングを行う。
  
  @param centroidNum 中心点数
  @param allDistance ユークリッド距離エンティティリスト
  @return マッピング