Usunięcie wybranego elementu z tablicy

0

Witam, tak jak w temacie mam za zadanie usunąć wybrany element z tablicy. Tablica przechowuje obiekty klasy Osoba ( w jej skład wchodzi: imię, nazwisko, id osoby).

Problem mam w funkcji usuwającej. Napisałem własną funkcję equals() i indeks elementu w tablicy dobrze znajduje, natomiast w ogóle nie przesuwa tych elementów tablicy (czyli nie usuwa mi wybranego elementu). Mógłby ktoś doradzić jak rozwiązać ten problem?

public class Array {	
	
	private Osoba[] c = new Osoba[10];  
	public  int index =0;           
	
public void add(Osoba osoba) 
	{							
		c[index] = osoba;
		index++;					
	}
public void delete(Osoba osoba )
	{		
		int j;		
		for ( j=0; j < index; j++)           
			if (osoba.equals(c[j]) )
				break;
				
		if ( j == index)
			System.out.printl("Nie znaleziono elementu");
	
		else
		{	
			index--;			
			for ( int k=j; k < index ; k++)
			{ 					
				c[k] = c[k+1];       	
				
			}				
		}
   }
}
		
0

Nie wiem jak wygląda u Ciebie klasa Osoba i funkcja do porównywania. W każdym razie sprawdziłem na szybko i funkcja delete działa chyba tak jak chcesz. Czyli w przypadku elementów:

osoba1
osoba2
osoba3
osoba4
osoba5

po wywołaniu

delete(osoba3);

lista wygląda tak:

osoba1
osoba2
osoba4
osoba5
osoba5

Indeks wskazuje na drugie wystąpienie osoba5 i dodanie następnej osoby spowoduje nadpisanie tego drugiego wystąpienia.

0
        private int id;
	private String name;	
        private String lastName;
       
	
	public String getName() {
		return name;
	}

	public void setName(String setName) {
		this.name = setName;
	}

        public String getlastName() {
		return lastName;
	}

	public void setlastName(String setName) {
		this.lastName = setName;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}
	
	public boolean equals ( Object anotherObject)
	{
	if ( this == anotherObject) return true;
		
		//jezeli parametr rowny null, zwroc false
		if( anotherObject == null) return false;
		
		//jezeli klasy nie pasuja do siebie, obiekty nie moga byc sobie rowne
		if (getClass() != anotherObject.getClass() )
			return false;
		
		Osoba inny = (Osoba)anotherObject;
		
		// sprawdz czy pola skladowe mają te same wartości
		
		return  id==inny.id  && name.equals(inny.name) && lastName.equals(inny.lastName);		
	}


}
1

Zakładam, że każda Osoba ma inny id, nie mogłaby ta funkcja porównująca wyglądać jakoś tak?

public boolean equals (Osoba anotherObject) {
    return ((this.id == anotherObject.getId()) &&(this.name == anotherObject.getName()) && (this.lastName == anotherObject.getLastName()));
}

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