我有以下代码:
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");
在第二个循环运行时被执行。这怎么可能?
编辑:我用 printlns 对其进行了测试,但角色名称很好。我没有接触 equals() 或 hashcode(),我只是将字符串与 equals() 进行比较。问题是组织名称被附加到属于它们的每个角色的消息中,而它们应该只出现一次。