私は LinkedHashMap を持っていて、以下のコードで述べられているように、それを二重に繰り返しています:
LinkedHashMap<Integer,Integer> nmResultMap = getResultMap();
float[][] results = new float[nmResultMap.size()][nmResultMap.size()];
for (Entry<Integer,Integer> e :nmResultMap.entrySet()){
for (Entry<Integer,Integer> t :nmResultMap.entrySet()){
results[e.getValue()][t.getValue()] = doSomthng(e.getKey(),t.getKey());
}
}
これは問題なく動作しますが、結果が対称であるため ( doSomthng(e.getKey(),t.getKey())==doSomthng(t.getKey(),e.getKey())
)、最初の反復の次の (現在の + 1) 位置で 2 番目の反復を開始することで、ランタイムを節約したいと考えています。配列:
for (int i =0;i<array.length();i++){
for (int j=i+1;j<array.length();j++){
doSomthng(array[i][j]);
}
}
ご協力ありがとうございました