2015-05-21 14 views
8

ile döngüler için iç içe Değiştir Aşağıdaki parçacığını var ve Akışları/ile değiştirmek için Java 8 API mümkün olup olmadığını ve nasıl acabaiki java 8 API

for (State state : states) { 
    for (City city : cities) { 
     if (state.containsPoint(city.getLocation())) { 
      System.out.printf("%30s is part of %-30s\n", 
        city.getName(), state.getName()); 
     } 
    } 
} 
+3

Sadece bir not olarak, Stream API ile bu döngüyü dönüştürmek mümkün olsa da, bu durumda okunabilirlik kazanacağınızı düşünmüyorum ve bu for-loop'la sadık kalacağım. –

+0

Evet, kesinlikle. Ama bir çözümün nasıl olabileceğini merak ediyordum. – tplacht

cevap

17

böyle bir şey olacak:

// first loop 
states.forEach(state -> { 
    // second loop for filtered elements 
    cities.stream().filter(city -> state.containsPoint(city.getLocation())).forEach(city -> { 
     System.out.printf("%30s is part of %-30s\n", city.getName(), state.getName()); 
    }); 
}); 
+0

Bu hızlıydı. Teşekkür ederim bir deneyin – tplacht

+6

"Durumlar" akışını ihmal edebilir ve sadece 'states.forEach' kullanabilirsiniz. –