에 여러 배열을 줄이고이 수행하여 Java8 새로운 람다와 List<String>
에 List<Map<String, Object>>
을 줄일 :I 필터링하기 위해 노력하고있어 목록
List<Map<String, Object>> myObjects = new ArrayList<>();
myObjects.stream()
.filter(myObject-> myObject.get("some integer value").equals(expectedValue))
// myObject.get("some attribute") == ["some string", "maybe another string"]
.map(myObject-> myObject.get("some attribute"))
.collect(Collectors.toList());
결과는 목록입니다하지만 내부의 모든 문자열을 결합하려는 결과는 List<String>
가됩니다.
을 명확히하기 위해, 이것은 내가 지금지고있어 결과입니다
ArrayList{["some string"], ["another string"]}
하지만 난이 원하는 :
ArrayList{"some string", "another string"}
누군가가 나에게 내가 줄 필요가있는 부분에 힌트를 줄 수 String[]
~ String
? 나는 .map()
부분에 그것을 짐작할 것이다. 그러나 나는 내가 거기에서 무엇을 바꿀 것인지 모른다.
편집 :List<Map<String, Object>> myObjects
테스트 목적으로 생성 할 수있는 방법
:
List<Map<String, Object>> myObjects = new ArrayList<>();
Map<String, Object> myObject = new HashMap<>();
myObject.put("some integer value", 1);
String[] theStringIWant = new String[1];
theStringIWant[0] = "Some important information I want";
myObject.put("some attribute", theStringIWant);
myObjects.add(myObject);
다음과 같습니다
List<MyObject{"some attribute": 1}>
주 : 그건 그냥 예입니다 내 unittest에서. 목록 normaly에는 하나 이상의 요소가 포함되어 있으며 모든지도에는 some attribute
뿐만 아니라 더 많은 특성이 있습니다.
어렵지만, 아마 .flatmap (myObject-> (list) myObject.get ("list")) .stream())' –
몇 분만 기다려 주시면 실제 목록을 더 잘 보여줄 수 있습니다. :) – Peter
내가 이것을 시도하면'java.lang.ClassCastException : [Ljava.lang.String; java.util.List'에 캐스트 할 수 없습니다. – Peter