I am trying to do subtract operation on ArrayList using removeAll. But the outcome is not as expected. Actually its not removing anything.
ArrayList<Integer> tempSelectedPrivilges = new ArrayList<Integer>(privPickList.getTarget());
log.debug("Original selected : " + selectedPrivilges);
log.debug("temp selected : " + tempSelectedPrivilges);
ArrayList<Integer> addedPrivileges = new ArrayList<>(tempSelectedPrivilges);
ArrayList<Integer> deletedPrivileges = new ArrayList<>(selectedPrivilges);
log.debug("Add : " + addedPrivileges);
log.debug("Delete : " + deletedPrivileges);
addedPrivileges.removeAll(selectedPrivilges);
deletedPrivileges.removeAll(tempSelectedPrivilges);
log.debug("Add : " + addedPrivileges);
log.debug("Delete : " + deletedPrivileges);
Output is something like this :
Original selected : [2, 3]
temp selected : [2, 1, 4, 5, 6]
Add : [2, 1, 4, 5, 6]
Delete : [2, 3]
Add : [2, 1, 4, 5, 6]
Delete : [2, 3]
Only problem I see is :
privPickList.getTarget() returns a List<Integer> rather than ArrayList<Integer>.
Because when I create tempSelectedPrivileges like this, it works prefectly fine :
ArrayList<Integer> tempSelectedPrivilges = new ArrayList<>();
tempSelectedPrivilges.add(3);
tempSelectedPrivilges.add(5);
tempSelectedPrivilges.add(6);
Why creating ArayList of Integer from List of integer is creating problems?
And when I am trying to do :
for(Integer i : privPickList.getTarget()) {
tempSelectedPrivilges.add(i);
}
there is no compile time error. But runtime error
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
on line
tempSelectedPrivilges.add(i);