Usuwanie warunkowe elementow

0

Mam problem bo nie wiem jak wykorzystując metodę removeIf usunąć z listy elementy spełniające podany przez użytkownika
warunek(oznacza to że muszę to zrobić w czasie działania programu) i nie wiem czy jest to możliwe....

np dla


  LinkedList<Integer> vector2=new LinkedList<>();
     Random generator=new Random();
     Scanner in=new Scanner(System.in);
  
    int n=in.nextInt();
        for(int i=0;i<n;++i){
            vector2.add(generator.nextInt(10));
        }   
  vector2.removeIf((String i)->{return 1;});
0

trochę namieszałeś w tym removeif, ten String tam nie potrzebny - jeśli chcesz się pozbyć elementów równych 1 to będzie tak:

vector2.removeIf((i) -> i == 1);
0
Pablitto77 napisał(a):

trochę namieszałeś w tym removeif, ten String tam nie potrzebny - jeśli chcesz się pozbyć elementów równych 1 to będzie tak:

vector2.removeIf((i) -> i == 1);

tzn ja chce sobie wklepywać dowolny warunek jako użytkownik i nie wiem czy to jest możliwe

1

to wczytaj sobie kolejną zmienną ze scannera

int y = in.nextInt();
vector2.removeIf(i -> i == y);
0
Pablitto77 napisał(a):

to wczytaj sobie kolejną zmienną ze scannera

int y = in.nextInt();
vector2.removeIf(i -> i == y);

też w zasadzie nie rozumiem tego że np. tutaj to "i" jest po prostu tym na co wskazuje iterator tzn.dany obiekt tej listy?( i przechodzi po całej liście)
i jaki typ jest zwracany w tej lambdzie? czy to bool?

0

Tak, dokładnie metoda removeIf iteruje sobie pod spodem po kolekcji i sprawdza czy dany element i (czy jakkolwiek go nazwiesz) spełnia określony w parametrze warunek (predykat) czy nie, jeśli spełnia usuwa go.
Pewnie można by to samo napisać klasycznie:

Iterator<Integer> iter = vector2.iterator();
		while (iter.hasNext()){
			if(iter.next() == y)
				iter.remove();
		}

tylko po co, skoro można krócej i czytelniej

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