2017-08-19 1 views
-1

Je parcours sur ma liste allRecords de type Abc à l'aide d'un itérateur. Pour garder trace des éléments itérés, je garde une variable de position.Position de retour d'un élément dans Arraylist à l'aide de Lambda en Java

J'utilise cette variable de position pour appliquer davantage de logique dans mon programme.

extrait de code

est la suivante:

Abc abc; 
Iterator<Abc> iterator = allRecords.iterator(); 
while (iterator.hasNext()) { 
    abc = iterator.next(); 
    position++; 
    //validate the abc object with some conditions and break the loop if matches 
    //I will have that position where the condition matched 
} 

Ma question est ce que je peux utiliser une partie de la dernière API de flux ou l'expression lambda de Java pour remplir cette tâche.

Toute aide serait appréciée.

+0

le point des flux éviterait des choses comme les index, qu'essayez-vous d'atteindre ici? – Rogue

Répondre

1

Vous pouvez y parvenir en quelque chose comme ça

IntStream.range(0, allRecords.length) 
    .filter(i -> allRecords[i].length() <= i) 
    .mapToObj(i -> allRecords[i]) 

Cependant streaming la conception de l'API pour rendre l'itération interne possible et vous ne devriez pas problème avec l'index lorsque vous utilisez cette api.

se référer à cet article pour plus d'informations sur External and internal itération.