» »

ArrayList java, odstrani ponavljajoče, dve polji

ArrayList java, odstrani ponavljajoče, dve polji

AaBoy ::

Pozdravljeni, mene zanima ali mi zna kdo pomagat pri mojem problemu. Imam dva objekta tipa ArrayList in bi rad videl kateri objekti znotraj arraya so unikatni in bi rad izbrisal vse ponavljajoče.
Primer kode:

ArrayList<Artikli> vmesni=new ArrayList<Artikli>();
vmesni.add(new Artikli(0, "2,3", "joza", "1kos", "dobro"));
vmesni.add(new Artikli(0, "2,3", "joza", "3kos", "dobro"));
vmesni.add(new Artikli(0, "2,3", "joza", "4kos", "dobro"));
vmesni.add(new Artikli(0, "2,3", "joza", "5kos", "dobro"));
		
ArrayList<Artikli> novi=new ArrayList<Artikli>();
novi.add(new Artikli(0, "2,3", "joza", "1kos", "dobro"));
novi.add(new Artikli(0, "2,3", "joza", "2kos", "dobro"));
novi.add(new Artikli(0, "2,3", "joza", "4kos", "dobro"));
novi.add(new Artikli(0, "2,3", "joza", "5kos", "dobro"));


Hočem da iz arraylista novi izbriše vse enake, ki so v arraylistu vmesni.

Poskusil sem z vsem... remove, celi objekt, del objekta, poskusil sem že contains pa vse, da bi videl ali ju zazna kot enaka in tudi ne deluje.

Skratka brez idej sem. Zanima me ali je sploh to možno na taki način narediti kot mislim ali ne? Če ima kdo kakšno idejo sem jo vesel.

Spura ::

Za zacetek moras definirat enakost za razred Artikli, kar pomeni moras overrideat metodo equals iz razreda Object.
Naprimer ce ti je enakost enakost parametrov v konstruktorju dodas v Artikli:
private static boolean cmp(Object o1, Object o2) {
    if (o1 == null) {
        return o2 == null;
    } else {
        return o2 != null && o1.equals(o2);
    }
}

public boolean equals(Object obj) {
    if (obj != null && obj instanceof Artikli) {
        Artikli a = (Artikli)obj;
        return cmp(this.param1, a.param1) && cmp(this.param2, a.param2) 
               && cmp(this.param3, a.param3) && cmp(this.param4, a.param4) && cmp(this.param5, a.param5);
    } else {
        return false;
    }
}
Kjer so param1 do param5 ta polja k jih das v konstruktorju. Potem ti bo contains delal.

KaRkY ::

Uporabi Set namesto lista, ampak boš v objektih moral implementirati equals in hashCode. Set namreč po definiciji ne dovoljuje ponavljajočih objektov.
When you look long into an abyss, the abyss looks into you

Spura ::

In kaj ce potem hoces uporabljat dostop po indeksu? Ali pa iteracijo? Brezveze za 4 elemente Set uporabljat. Dovolj je override equals in potem uporaba contains pred klici add funkcije.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Java] Podatkovni tip

Oddelek: Programiranje
233801 (3453) piki12
»

[Java] Sortiranje razredov

Oddelek: Programiranje
101452 (1199) Spura
»

Sortiranje po večih atributih, java

Oddelek: Programiranje
161675 (1441) marjan_h
»

[Java] Castanje

Oddelek: Programiranje
91531 (1386) fiction
»

c# kako v prvi IEnumerable addati samo "Accaptable" tipe iz drugega IEnumerabla

Oddelek: Programiranje
51117 (1041) commissar

Več podobnih tem