için birden diziler azaltın ve bunu yaparak Java8 yeni lambdas ile List<String>
bir List<Map<String, Object>>
azaltmak:Ben filtrelemek çalışıyorum listesi
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());
sonucu Liste ama içindeki tüm Dizeler birleştirmek istiyorum oluşan sonuç için List<String>
.
olayı aydınlatmak için, bu şimdi alıyorum sonucudur:
ArrayList{["some string"], ["another string"]}
Ama bunu istiyorum:
ArrayList{"some string", "another string"}
birisi bana azaltmak zorunda hangi bölümüne bir ipucu verebilir String[]
, String
için? .map()
parçasında olduğunu tahmin ediyorum ama orada ne değişeceğimi bilmiyorum.
düzenleme:List<Map<String, Object>> myObjects
test amaçlıdır oluşturulabilir nasıl
:
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);
şuna benzer:
List<MyObject{"some attribute": 1}>
Not: Bu sadece bir örnek benim uysallığımdan. Listede normalde birden fazla öğe bulunur ve her haritanın yalnızca some attribute
değil, daha fazla özelliği vardır.
Zor, ama muhtemelen need .flatmap (myObject-> ((List) myObject.get ("liste")). stream()) ' –
Bana birkaç dakika verirseniz, gerçek listeyle daha iyi bir örnek sağlayabilirim. :) – Peter
Bunu denerseniz, bir "java.lang.ClassCastException" alıyorum: [Ljava.lang.String; java.util.List ' – Peter