2015-01-21 14 views
10

Bir Köpek sınıfım olduğunu varsayalım. İçimde bir harita var ve değerlerden biri de Breed.Java akışı - Listenin bir hash listesine bir listeyi sıralama

public class Dog{ 
    String id; 
    ... 
    public map<String,String> 
} 

bunu yineleme yerine akışı kullanma listeleri

HashMap<String, List<Dog>> // breed to a list<Dog> 

haritasını elde etmek istiyorum.
Bunu nasıl yapabilirim?

cevap

25

Bunu groupingBy ile yapabilirsiniz. girişinizi varsayarsak

bir List<Dog> ve Dog sınıf içinde Map üye map denir ve Irk tuşu "Breed" için depolanır:

List<Dog> dogd = ... 
HashMap<String, List<Dog>> map = dogs.stream() 
            .collect (Collectors.groupingBy(d -> d.map.get("Breed"))); 
10

harika yanıt yukarıda daha da geliştirilebilir işlevsel programlama gösterimini kullanarak:

List<Dog> dogs = ... 
HashMap<String, List<Dog>> map = dogs.stream().collect(Collectors.groupingBy(Dog::getBreed));