次のコードがあります。
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 回だけ表示されるはずの組織に属する各役割のメッセージに追加されることです。