Poszerzenie tablicy

0

Witam, mam taki problem: zadeklarowałem tablicę

Osoba Dane[] = null;

i ją stworzyłem

Dane = new Osoba[N];

teraz ją wypełniam.

No i muszę jeszcze stworzyć funkcję, która umożliwia dodanie elementów, czyli potrzebuje powiększyć tablicę tak, by zmieściło się w niej np. N+2 elementów. Da się?

0

Tablicę nie, mozesz zrobić nową większa i przepisać do niej zawartość tej nowej.
Bądź uzyć czegokolwiek implementującego List (np ArrayList)

0

Może mała podpowiedź, jak to zrobić w takim razie za pomocą list?

0

List<Osoba> list = new ArrayList<Osoba>(N);

list.add(osoba);
list.add(osoba);
list.add(osoba);
list.add(osoba);
... i tak do woli.

0

dzieki

0

A jak mogę się odwołać do elementu listy o jakimś tam indeksie?
No i jaką funkcją mogę usunąć element listy, oraz czy wtedy elementy powyższe same się przesuną w dół, czy na liście zostanie "puste miejsce"

0

a czy z googli szanowny Pan umie korzystać?

0

No dobra:) zaraz poklikam. Trochę się zbyt wygodny przez to forum zrobiłem.

0

A więc już wyklikałem, że wartość listy o indeksie i można ustawić za pomocą list.set(i, wartosc),
a pobrać wartość z tego miejsca list.get(i). To tak, jak by komuś innemu się miało przydać.

Teraz moje pytanie, którego nie udało mi się rozwiązać:

moja_klasa Dane[]= new moja_klasa[N];

Dane.[i].Szukaj(s)

w ten sposób mogę się odwołać do funkcji Szukaj, która znajduje się w mojej_klasie.

Ale jak to zrobić, gdy operuje na liście, a nie tablicy?

0
adamoz napisał(a)

Teraz moje pytanie, którego nie udało mi się rozwiązać:

moja_klasa Dane[]= new moja_klasa[N];

Dane.[i].Szukaj(s)

w ten sposób mogę się odwołać do funkcji Szukaj, która znajduje się w mojej_klasie.

Ale jak to zrobić, gdy operuje na liście, a nie tablicy?

Witam
Ale co ta metoda "szukaj" ma robic? 8-O

Kolega przeczytal dokumentacje Sunowa? :>
http://java.sun.com/j2se/1.4.2/docs/api/java/util/ArrayList.html

0

Cóż. Może faktycznie na początku pytałem się o każdą pierdołe. Ale teraz pytam się o to, czego nie mogę znaleźć. Jak nie chcecie pomóc, spoko, ale komentować nie trzeba. A dokumentację owszem przeczytałem.

Chodzi mi o to, że mam listę, do której dodaje sobie elementy typu moja_klasa. Lista nazywa się Dane, a Szukaj() jest jedną z funkcji zdefiniowanych w tej klasie. Funkcja coś zwraca, w zależności od tego, dla którego elementu listy ją wywołam, będzie to co innego. Dla tego chciałbym móc ją wywołać dla pozycji na liście o konkretnym indeksie.

  public moja_klasa Wyszukaj(String s)
    {
      for (int i=0; i<ile;i++)
       if (Dane[i].Szukaj(s))
        return   Dane[i];
      return null;
    }

Tak to wyglądało, gdy operowałem na tablicy, teraz przerobiłem to na liste

0

lista.get(i).szukaj(?) ?? :)
Widocznie nie doczytales o metodzie get http://java.sun.com/javase/6/docs/api/

0

Ratujesz mnie. Dzięki.

0

nie wiem zbytnio o co chodzi Koledze ... i w sumie chce pomoc

Z tego co kolega mowi napisalem cos takiego na predce

przyklad klasy Kolegi

class Dana{
	private String s="jakis string w danej";
	public boolean szukaj(String s){
		if(this.s.equals(s))
			return true;
		return false;
	}
}

I jakies wywolanie


		 ArrayList<Dana> list = new ArrayList<Dana>();
		 Dana jakisObjekt = new Dana();
		 list.add(jakisObjekt);
		 
		 if(list.contains(jakisObjekt)){
			 list.get(list.indexOf(jakisObjekt)).szukaj("jakis string");
		 }

Ale mimo wszystko nie wywolywal bym metody szukaj na obiekcie tylko wywolywal geter z tego co szukaj(String s) porownuje... ale do tego mam za malo info

Tu jeszcze naskrobalem cos szybko co bardziej przypomina poprzedni kod

	private Dana czek(List<Dana> aList , String aString){
		for(Dana ob : aList){
			if(ob.szukaj(aString)){
				return ob;
			}
		}
		return null;
	}
0

Ale

lista.get(i).szukaj(?)

naprawdę rozwiązało mój ostatni problem. Dzięki Panowie. Na razie wszystko się ładnie kompiluje.

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