나는 중첩 된 값을 가진 json 구조가 커서 작업 할 개체 목록으로 변환되었습니다. 특정 속성 값을 포함하지 않는 모든 개체를 필터링하고 싶습니다. 문제는, 지금까지 제가 생각해 낸 것은 for 루프 내의 for 루프 내의 for 루프입니다. 그리고 이것은 json 구조가 단지 3 개의 중첩 된 레벨이라는 것을 알고 있습니다. 정수 만 포함하는 객체 만 필터링하려고합니다 (null 인 경우, 유효한 무언가를 포함하는 부모 일 수도 있고 비어있는 부모 일 수도 있음). 병합으로 스트리밍하려고하면 모든 객체와 중첩 된 객체를 필터링 할 수 있지만 구조를 잃지는 않습니까?자체 순환 참조가있는 개체 필터링 (ObjectA에는 List <ObjectA> 속성이 있습니다.)
예 :
public class ObjectA {
Integer id;
List<ObjectA> sublist;
}
List<ObjectA> fullList;
Set<Integer> keeptheseIntegers;
for (ObjectA obj : fullList) {
if (obj.getId() != null && !keeptheseIntegers.contains(obj.getId()){
fullList.remove(obj);
} else if (obj.getId() == null && obj.getSubList().size() > 0) {
for (ObjectA subObj : obj.getSubList()){
(same thing as above)
}
}
편집 - 나중에 제거가 제대로 작동하지 않고 iterator.remove를 사용했다는 것을 깨달았습니다. 여전히 논리적 인 문제 임
당신이 ObjectA가 유효한 정수 또는 유효한 하위 목록 중 하나를 포함 뜻 이죠,하지만 둘 : 메인 프로그램
및 somewher 당신이 그것을 호출 흐름 ? – Heri
fullList.remove (obj)는 자체 iterator 내에서 콜렉션을 변경할 수 없기 때문에 예외를 throw한다고 가정합니다. – Heri
네 haha 내가 iterator.remove하지만 루프 등 루프 내에서 올바른 노드가 유효한 정수/sublist에 관한 올바른 올바른 것 같아요. . – ec3