I want to limit the number of values in an ArrayList in the below code
newExam.getQuestionList().stream().forEach(qtn- >{
String title=qtn.getOption1();
if(qtn.getCorrectOptionIndex()==2){
title=qtn.getOption2();
}else if(qtn.getCorrectOptionIndex()==3){
title=qtn.getOption3();
}
dragDropEntities.add(new DragDropEntity(qtn.getId().getQtnId(), title, qtn.getImage()));
I decided to use this way,
int i = 0;
list.stream.forEach(item -> {
i++;
});
but this gives me the error "Variable used in lambda expression should be final or effectively final"
Because this variable I is incrementing inside lambda expression it is not final so this gives the above error.
So I fixed this by using the AtomicInteger in the below way,
AtomicInteger atomicInteger=new AtomicInteger();
newExam.getQuestionList().stream().forEach(qtn->{
String title=qtn.getOption1();
if(qtn.getCorrectOptionIndex()==2){
title=qtn.getOption2();
}else if(qtn.getCorrectOptionIndex()==3){
title=qtn.getOption3();
}
if(atomicInteger.getAndIncrement()<6) {
dragDropEntities.add(new DragDropEntity(qtn.getId().getQtnId(), title, qtn.getImage()));
}
}
);
This solves the issue and I can see the list correctly with six elements
Nesta página do site você pode assistir ao vídeo on-line How to resolve Variable in lambda expression should be final or effectively final in forEach Java 8 duração hora minuto segundo em boa qualidade , que foi baixado pelo usuário smashplus 30 Novembro 2022, compartilhe o link com seus amigos e conhecidos, no youtube este vídeo já foi visto 920 vezes e gostou 4 espectadores. Boa visualização!