problem z rzutowaniem z ArrayList

problem z rzutowaniem z ArrayList
KA
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 12 lat
  • Postów:44
0

Witam
Mam następujący kod:

Kopiuj
        for(int i=0;i<listaZalogowanych.size();i++)
			{
			System.out.println("wyrazenie1: " + (String) (object) +"  wyrazenie2: "+ (String) listaZalogowanych.get(i));
			
	                         if ((String) listaZalogowanych.get(i)==(String) (object))
				{
				System.out.println("jestem w pętli");
				listaZalogowanych.remove(i);
				}
			}

Problem jest w tym, że podczas pewnego obrotu pętli pojawia się komunikat "wyrazenie1: test wyrazenie2: test
a komunukat "jestem w pętli" nie pojawia się?
hmmm... przecież te dwa stringi są takie same więc dlaczego warunek if nie jest spełniony??

p.s dodam że operacja ta udaje się dla null

edytowany 2x, ostatnio: kakuna
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

Operator == dla Stringów porównuje referencje, nie zawartość. Użyj metody equals().


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
KA
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 12 lat
  • Postów:44
0

czyli coś takiego?

Kopiuj
	if (listaZalogowanych.get(i).equals(object))
				{
				System.out.println("A mnie tu nie ma");
				listaZalogowanych.remove(i);
				}

Czy również je rzutować?

bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

Zależy jakiego typu są zmienne obiekt i listaZalogowanych. Możesz nie rzutować, jeśli obiekt jest typu String, a listaZalogowanych jest typu List<String>.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.