私は2つのリストを持っています
Collection<String> listOne = new ArrayList<String>();
Collection<String> listTwo = new ArrayList<String>();
for(PermissionDataObject permissionDataObject : selectedPermissions)
listOne.add(permissionDataObject.getPermissionName());
for(String selectedPermissions : selectedList)
listTwo.add(selectedPermissions);
Collection<String> similarPermissions = new HashSet<String>(listOne);
Collection<String> differentPermissions = new HashSet<String>();
differentPermissions.addAll(listOne);
differentPermissions.addAll(listTwo);
similarPermissions.retainAll(listTwo);
differentPermissions.removeAll(similarPermissions);
System.out.printf("One:%s%nTwo:%s%nSimilar:%s%nDifferent:%s%n", listOne, listTwo, similarPermissions, differentPermissions);
出力は
One:[MENU_CREATION, ROLE_CREATION]
Two:[CREATE_BRANCH, CREATE_COUNTRY, MENU_CREATION, ROLE_CREATION]
Similar:[ROLE_CREATION, MENU_CREATION]
Different:[CREATE_BRANCH, CREATE_COUNTRY]
上記のコードは完全に機能しており、別のコレクションを取得しました
しかし、私はlistTwoとdifferentPermissionsをチェックしたい.もし異なっていてlistTwoが等しい場合doSomething異なっていてlistTwoが等しくない場合
私は以下のコードを持っています。異なる値が1つの場合、動作しています。異なる値が複数ある場合、ループは分割されます
for (Iterator<String> it = differentPermissions.iterator(); it.hasNext();){
String diffString = it.next();
String selectedString = selectedList.listIterator().next();
log.info("---diffString---" + diffString);
log.info("---selectedString---" + selectedString);
if(diffString == selectedString){
System.out.println("----permission added----" + diffString);
}else{
System.out.println("----permission deleted----" + diffString);
}
}
どんなアイデアでも、私にとって素晴らしいです...
ありがとうプラディープ
[編集] 私のコードの小さな変更は、以下の完全なコードを参照してください
Collection<String> listOne = Arrays.asList("MENU_CREATION", "ROLE_CREATION");
Collection<String> listTwo = Arrays.asList("CREATE_BRANCH", "CREATE_COUNTRY", "MENU_CREATION", "ROLE_CREATION");
Collection<String> similar = new HashSet<String>(listOne);
Collection<String> different = new HashSet<String>();
different.addAll(listOne);
different.addAll(listTwo);
similar.retainAll(listTwo);
different.removeAll(similar);
System.out.printf("One:%s%nTwo:%s%nSimilar:%s%nDifferent:%s%n", listOne, listTwo, similar, different);
for (Iterator<String> it = different.iterator(); it.hasNext();) {
String diffString = it.next();
String selectedString = listTwo.iterator().next();
if (diffString.equals(selectedString)) {
System.out.println("----permission added----" + diffString);
} else {
System.out.println("----permission deleted----" + diffString);
}
}