Šta je novo?

[Java]Pitanje oko kolekicja

Blue Master

Poštovan
Učlanjen(a)
01.06.2014
Poruke
9
Poena
51
Dobio sam primer kako treba da uradim svoju kolekciju,ali u kodu mi nisu jesne neke stvari,pa ako neko zna da mi malo pojasni.Nije mi jasan ovaj deo:private E[] lista = (E[]) new Object[duzina];jel mora E lista?jel moze mozda Arrey?
takodje na znam za sta tacno sluzi System.arraycopy?
ovaj deo mi je konfuzan:int num = duzina - index - 1;
if (num > 0) {
System.arraycopy(lista, index + 1, lista, index, num);
}
lista[--duzina] = null;
}


public class RadosKolekcija<E> implements RadosKolekcijaInterface<E> {

private int duzina = 0;
private E[] lista = (E[]) new Object[duzina];

/**
* Prazan konstruktor.
*/
public RadosKolekcija() {
}
/*
* Brise element iz liste koji se nalazi na zadatom indeksu.
*/

private void brisanjeElementa(int index) {
int num = duzina - index - 1;
if (num > 0) {
System.arraycopy(lista, index + 1, lista, index, num);
}
lista[--duzina] = null;
}
/*
* Proverava da li zadati indeks izlazi iz opsega liste i ako izlazi
* baca IndexOutOfBoundsException.
*/

private void proveriIndex(int index) {
if (index >= duzina || index < 0) {
throw new IndexOutOfBoundsException("Indeks je van opsega liste.");
}
}

@Override
public void dodajRados(E obj) {
lista = Arrays.copyOf(lista, ++duzina);
lista[duzina - 1] = obj;
}

@Override
public E uzmiRados(int index) {
proveriIndex(index);
return lista[index];
}

@Override
public void ukloniRados(E obj) {
for (int i = 0; i < duzina; i++) {
if (lista.equals(obj)) {
brisanjeElementa(i);
break;
}
}
}

@Override
public E ukloniRados(int index) {
proveriIndex(index);
E uklonjen = lista[index];
brisanjeElementa(index);
return uklonjen;
}

@Override
public void izmeniRados(int index, E obj) {
proveriIndex(index);
lista[index] = obj;
}

@Override
public void isprazniRados() {
for (int i = 0; i < duzina; i++) {
lista = null;
}
duzina = 0;
}

@Override
public int brElemenataRados() {
return duzina;
}

@Override
public E dajPrviRados() {
if (duzina == 0) {
throw new NullPointerException("Lista je prazna.");
}
return lista[0];
}

@Override
public E dajZadnjiRados() {
if (duzina == 0) {
throw new NullPointerException("Lista je prazna.");
}
return lista[duzina - 1];
}
}
 
Eh, da sam ranije znao da mogu ovde da dođem i da mi drugi urade domaće zadatke, gde bi mi kraj bio...
 
new Object[duzina] je kreiranje niza tipa Object koji se kastuje u niz tipa E.
Kod koga spremas ispit?
Za ostalo ne mogu da ti pomognem jer ne znam tekst zadatka. Uglavnom, ovde mozes da dobijes neka pojasnjenja ali ne i resenje na dlanu ;)
 
Poslednja izmena:
Koliko kapiram, ti ne razumes sta je kolekcija, u sustini ti treba da spremis unapred metode za baratanje s listom ne znajuci kod tipa je objekat te liste. Kada ti se u kodu nadje <E> sta to znaci, to znaci da pravis kolekciju koja ce imati tip E u sebi, ne znajuci unapred sta je to E. Tek kasnije ces menjati nekim konkretnim tipom(klasa, ugradjeni tip, enum ili sta vec). Tako da odgovor na tvvoje pitanje je, ne moze tu Array, jer Array nema nikakvo znacenje.
Ili moze Array ali da je u startu bilo nesto ovako
public class RadosKolekcija<Array> implements RadosKolekcijaInterface<Array>
(@drugi clanovi nek me neko ispravi mislim da Array nije rezervisana kljucna rec u Java-i)

sto se tice System.arraycopy(...) - mogao si da googlujes i nasao bi sledece - http://www.tutorialspoint.com/java/lang/system_arraycopy.htm

inace sve System.nesto funkcije se nalaze u klasi System gde su obicno sistemski pozivi ... opet imas na kompu u x://program files/java/jdk/javadoc/index.html celu java dokumentaciju sa objasnjenjima svih klasa koje se nalaze u JDK(mozda nisam naveo bas tacan path ali snacices se), a opet mozes da googlujes :)

Uzmi neku literaturu procitaj malo o kolekcijama, ja ih se ne secam mnogo nisam dugo obnavljao ali ovo iznad ti je koliko se secam sustina, napravis mehanizam ne znajuci unapred tip

A koliko vidim imas i interfejs koji implementiras, pa ako budes imao jos pitanja postuj i taj kod.

P.S. Ja mislim da se to sa E zove Generici a ne Kolekcije?

Nadam se da sam bio od pomoci ovako iz glave, ako sam nesto pogresio ne zameri nisam obnavljao gradivo dugo :)
 
Nazad
Vrh Dno