1

私が何をしたかを簡単に説明し、得られた結果が私の望む結果とどのように異なるかを示します。

ご提案いただきありがとうございます。

Java コードは Java オンライン コンパイラで作成され、いずれの場合もエラー メッセージなしで実行できます。

使用したJavaオンラインコンパイラ

簡単な説明:

正方行列の行インデックスと列インデックスの間のすべての可能な組み合わせにブール値を割り当てたいです。
主対角線のみがこれから除外されます。このために私はTreeMap <String, Boolean>

TreeMapfor ループで {row index + "-"+column index} をリンクして、のキーを形成します。
最初に、キーのすべての値に {false} が割り当てられます。

2 番目のループでは、選択されたインデックスbasicLと他のインデックス (= キー) のすべての可能な組み合わせがブール値 true とリンクされます (ここでも主対角線の値はありません)。その結果、TreeMap.keySet()はソート順 (キー順) に印刷されます。例はbasicL = 4;

マトリックスの図 (ブール真 = 緑、ブール偽 = 白、除外 = グレー):

ここに画像の説明を入力

Java コード:

import java.util.TreeMap;

public class Main {

  static TreeMap<String, Boolean> booleanMap = new TreeMap<>();

  public static void main(String[] args) {

    //all values of symmetric matrix without diagonal axis

    int max = 16;
    int basicL = 4;

    for (int i = 1; i <= max; i++) {

      for (int j = 1; j <= max; j++) {

        if (j != i) {
          booleanMap.put(i + "-" + j, Boolean.valueOf(false));
        }
      }
    }

    System.out.println("-----------------------------------------------------");
    System.out.println("TreeMap has size:  " + booleanMap.size());
    System.out.println("TreeMap values:    " + booleanMap.values());
    System.out.println("TreeMap keySet:   " + booleanMap.keySet());
    System.out.println("-----------------------------------------------------");

    // setting true-conditions

    for (int i = 1; i <= max; i++) {

      if (i != basicL) {

        for (int j = 1; j <= max; j++) {

          if (j == basicL) {

            booleanMap.replace(i + "-" + j, Boolean.valueOf(true));
          }
        }
      }

      if (i == basicL) {

        for (int j = 1; j <= max; j++) {

          if (j != i) {

            booleanMap.replace(i + "-" + j, Boolean.valueOf(true));

          }
        }
      }
    }

    System.out.println("TreeMap values after looping:    " + booleanMap.values());
    System.out.println("TreeMap keySet after looping:    " + booleanMap.keySet());
    System.out.println("-----------------------------------------------------");
  }
}

達成された結果booleanMap.keySet();

[1-10, 1-11, 1-12, 1-13, 1-14, 1-15, 1-16, 1-2, 1-3, 1-4, 1-5, 1-6, 1-7, 1-8, 1-9, 10-1, 10-11, 10-12, 10-13, 10-14, 10-15, 10-16, 10-2 .... ]

望ましい結果:

[1-2, 1-3, 1-4, 1-5, 1-6, 1-7, 1-8, 1-9, 1-10, 1-11, 1-12, 1-13, 1-14, 1-15, 1-16, 2-1, 2-3, 2-4, 2-5, 2-6, 2-7, 2-8, 2-9, 2-10, 2-11, 2-12 .... ]
4

3 に答える 3