¿Hay un eqivalent a romper en las corrientes de Java 8+?

Trillian:

Estoy tratando de filtrar una lista basada en una condición. ¿Existe una alternativa a romper en Java 8 arroyos que puedo usar para dejar de filtrar?

Para dar un ejemplo: supongamos que tengo la lista siguiente.

List<String> list = Arrays.asList("Foo","Food" ,"Fine","Far","Bar","Ford","Flower","Fire");

list.stream()
        .filter(str -> str.startsWith("F")) //break when str doesn't start with F
        .collect(Collectors.toList());

Quiero que todas las cadenas que comienzan con "F" desde el principio, tan pronto como se encuentre una cadena que no comienzan con "F" Quiero detener la filtración. Sin corrientes que haría lo siguiente:

List<String> result = new ArrayList<>();
for(String s : list){
    if(s.startsWith("F")){
        result.add(s);
    }
    else{
        break;
    }
}

¿Cómo uso la "ruptura" en corrientes?

Ravindra Ranwala:

Se puede utilizar el takeWhileoperador en Java9 que hace exactamente lo que necesita. Así es como se ve.

List<String> res = list.stream()
    .takeWhile(s -> s.startsWith("F"))
    .collect(Collectors.toList());

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=314998&siteId=1
Recomendado
Clasificación