Jak usunąć z listy elementy o danej wartości?

0

No więc mam listę Integer o nazwie sentences i chcę z niej usunąć te pozycje, na których występuje wartość jeden. Tyle, że kiedy to robię usuwa mi wszystko, pomimo tego, że na pewno na paru indeksach występują wyższe wartości. Robię to tak:

            for (int i = 0; i<sentences.size(); i++)
            {
            if(sentences.get(i)==1)
            {

            sentences.remove(i);
}

Byłbym wdzięczny za podpowiedź, co robię źle.

0

Podczas iteracji Użyj iteratora:)

		Iterator<Integer> it = s.iterator();
		while (it.hasNext()){
			if (it.next().equals(1))
				it.remove();
		}
0

sentences.removeif(twojInt -> twojInt == 1);

0

== służy do porównania prymitywów. Musisz użyć metody equals

0

Jeżeli będziesz jechał po liście "od dołu" i coś usuniesz to zaczniesz przeskakiwać elementy a na końcu wyjedziesz poza zakres. Lepiej jest porównywać i usuwać "od góry". Sprawdź również porównanie typów.

for (int i = sentences.size() - 1; i>=0; i--) {
            if(sentences.get(i)==1) {
               sentences.remove(i);
            }
}
4

Witam,

Spróbuj przy użyciu streamów z Javy 1.8.

sentences = sentences.stream() // tworze streama
.filter(x -> x != 1) // filtruje przy użyciu lambdy i odrzucam wartości różne od 1
.collect(Collectors.toList()); // zrzucam to co zostanie do listy

2

Nie mutuj tylko zrób nową listę przefiltrowaną, jak w przykładzie wyżej. Mutowanie stanu = problemy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1