Forum » Programiranje » 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:
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.
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:
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 ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [Java] Podatkovni tipOddelek: Programiranje | 3801 (3453) | piki12 |
» | [Java] Sortiranje razredovOddelek: Programiranje | 1452 (1199) | Spura |
» | Sortiranje po večih atributih, javaOddelek: Programiranje | 1675 (1441) | marjan_h |
» | [Java] CastanjeOddelek: Programiranje | 1531 (1386) | fiction |
» | c# kako v prvi IEnumerable addati samo "Accaptable" tipe iz drugega IEnumerablaOddelek: Programiranje | 1117 (1041) | commissar |