0

次のコードがあります。

Set<TOrganization> organizations = new LinkedHashSet<TOrganization>();
Set<TRole> roles = new LinkedHashSet<TRole>();
StringBuilder message = new StringBuilder("Requested roles: " + "\n");

//I fill them up with names like Test org A, Test Role A 1

for(TOrganization org : organizations) {
    message.append(" - " + org.getName()+ "\n");
    for(TRole role : roles) {
        if(role.getOrganization().equals(org)) {
            message.append("   - " + role.getName()+ "\n");
        }
    }
}

次のように、役割を別々のカテゴリに出力したいと思います。

" - テスト組織 A"
" - テスト役割 A 1"
" - テスト役割 A 2"
" - テスト組織 B"
" - テスト役割 B 1"
" - テスト役割 B 2"

しかし、私のコードでは常に、次のようにロールの前に組織名を追加します。

" - テスト組織 A"
" - テスト役割 A 1"
" - テスト組織 A"
" - テスト役割 A 2"
" - テスト組織 B"
" - テスト役割 B 1"
" - テスト組織 B"
" - テスト役割 B 2"

message.append(" - " + org.getName()+ "\n");2番目のループが実行されるたびに実行されるようです。そんなことがあるものか?

編集: printlns でテストしましたが、ロール名は問題ありません。equals() や hashcode() には触れていません。文字列を equals() と比較しているだけです。問題は、組織名が 1 回だけ表示されるはずの組織に属する各役割のメッセージに追加されることです。

4

2 に答える 2