-1
Я пытаюсь написать следующий код, используя потокиПерепишите еще, если в одном потоке Java 8
public static void main(String[] args) {
List<String> l = new ArrayList<String>();
l.add("pavan");
l.add("kumar");
l.add("rajesh");
for(String s : l){
if(s.contains("pavan")){
methodA();
}else if (s.contains("kumar")){
methodB();
}else{
System.out.println("C");
}
}
}
}
Я попытался следующие, используя потоки
public static void main(String[] args) {
List<String> l = new ArrayList<String>();
l.add("pavan");
l.add("kumar");
l.add("rajesh");
l.stream().
filter(s->s.contains("pavan")).
findAny().map(s->methodB()).filter(s->s.contains("kumar")).map(s->methodC()).
orElse(methodA());
}
Приведенный выше код никогда не исполняющих methodC()
.
Может ли кто-нибудь переписать его в одном потоке Java 8?
Как только вы назвали 'фильтр (s-> s.contains ("Павана"))', то есть только результаты, где значение содержит Павана в потоке. Это совершенно другой процесс ... Я не вижу смысла пытаться использовать поток здесь, он не предназначен для замены выражений else. –
Я понял это. Но как я могу написать код в lambda – pppavan
Если вы действительно хотите использовать потоки .... 3 шага: 'l.stream(). Filter (s -> s.contains (" pavan ")) .forEach (s -> methodA()); ' ' l.stream(). filter (s -> s.contains ("kumar")). forEach (s -> methodB()); ' 'l.stream(). filter (s ->! s.contains (" pavan ") &&! s.contains (" kumar ")). forEach (s -> methodC());' –