0
removeAll을 사용하여 ArrayList에서 뺄셈 연산을 수행하려고합니다. 그러나 그 결과는 예상대로는 아닙니다. 사실 아무것도 제거하지 않습니다. 내가 볼ArrayList의 removeAll 연산 <Integer>이 예상대로 작동하지 않습니다.
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]
만 문제는 다음과 같습니다 :이 같은 tempSelectedPrivileges을 만들 때
privPickList.getTarget() returns a List<Integer> rather than ArrayList<Integer>.
, 그것은 prefectly 잘 작동하기 때문에 :
ArrayList<Integer> tempSelectedPrivilges = new ArrayList<>();
tempSelectedPrivilges.add(3);
tempSelectedPrivilges.add(5);
tempSelectedPrivilges.add(6);
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);
출력은 다음과 같이이다
왜 cr 정수 목록에서 정수의 ArayList를 섭취하면 문제가 발생합니까?
그리고 때 내가 할 노력하고 있어요 :
for(Integer i : privPickList.getTarget()) {
tempSelectedPrivilges.add(i);
}
에는 컴파일 타임 오류가 없다. 그러나 런타임 오류가 라인에
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
tempSelectedPrivilges.add(i);
클래스에서 dden equals() 메소드 ?? –
'getTarget'이 List 또는 선호하는 [최소, 검증 가능한 예제] (http://stackoverflow.com/help/mcve)를 채우는 방법을 보여주십시오. – Radiodef
변수는 'List'유형이어야합니다 : [Liskov 대체 원리] 참조 (http://en.wikipedia.org/wiki/Liskov_substitution_principle) – Bohemian