다른지도 안에 포함 된 객체 내부의 목록을 반복하는 데 문제가 있습니다. 내 목표는이 목록을 반복하고 map <String, String>을 생성하는 것입니다. 스트림과 람다를 사용하여이를 달성하고 싶습니다.
public class ModelBO {
private String id;
private String name;
private String version;
private Map<String, FolderBO> folderValues = null;
}
public class FolderBO {
private String id;
private String name;
private String type;
private Map<String, String> properties;
private List<ElementBO> elements = new ArrayList<ElementBO>();
}
public class ElementBO {
private String id;
private String name;
private String type;
}
위에서 보았습니다. folderBo 안에있는 elementList를 반복하여 elementBo에서 map <id, name>을 사용하여 맵을 만들어야합니다. folderBo 자체는 ModelBo의 맵 안에 있습니다.
다음 코드를 작성했습니다.
Map<String,String> elementMap =
UniModelBO.getInstance().getFolderValues().entrySet().stream()
.filter(entrySet -> entrySet.getKey()!="relations")
.map(entrySet -> entrySet.getValue().getElements()::stream)
.collect(Collectors.toMap(ElementBO::getName, ElementBO::getId));
UniModelBO는 ModelBo에 대한 싱글 톤 객체를 생성하는 유틸리티 클래스입니다.
거의 완료되었습니다 flatMap
. 중첩 List
스트림을 단일 스트림으로 변환하는 데 사용 하면 됩니다. 또한 equals
문자열 비교 방법 을 사용하는 것이 좋습니다 .
Map<String, String> elementMap =
UniModelBO.getInstance().getFolderValues().entrySet().stream()
.filter(entrySet -> !entrySet.getKey().equals("relations"))
.flatMap(entrySet -> entrySet.getValue().getElements().stream())
.collect(Collectors.toMap(ElementBO::getName, ElementBO::getId));
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다