List<int [][]> - ověřování existence prvku v kolekci – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

List<int [][]> - ověřování existence prvku v kolekci – Java – Fórum – Programujte.comList<int [][]> - ověřování existence prvku v kolekci – Java – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
MaxDJs0
Návštěvník
26. 11. 2014   #1
-
0
-

zdravím mám kolekci dvourozměrných polí. Jak mám ověřit jestli nějaký prvek se vyskytuje v té kolekci?

List<int[][]> list = new ArrayList<>();
int[][] value = {{3,3}};
list.add(value);

if(list.contains(value[0])){
....
}

nevykoná mi to ten blok příkazů, který se má vykonat po splnění příkazů i když ten prvek v té kolekci je. Mohl by mi někdo poradit v jaké formě mám předat metodě contains parametr, aby mi to správně vyhodnotilo podmínku. 

Děkuji za odpověď

Nahlásit jako SPAM
IP: 147.32.187.–
Reklama
Reklama
ingiraxo+15
Grafoman
26. 11. 2014   #2
-
0
-

#1 MaxDJs
tohle nepoužívej, pravděpodobně by si musel udělat vlastní metodu zjištění existence matice.. spíš bych udělat vlastní objekt 

public class Point
{
   public int x;
   public int y;

   public Point(int x, int y)
   {
       this.x = x;
       this.y = y;
   }
}


a potom tvoje použití bude fungovat správně 

List<Point> list = new ArrayList<>();
Point point = new Point(3, 3);
list.add(point);

if (list.contains(point)) {
   // bude ok
}
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
ingiraxo+15
Grafoman
26. 11. 2014   #3
-
0
-

#1 MaxDJs
Ještě bych možná doplnil.. pokud to opravdu chceš takto jako int[][] (i když se s tím potom špatně pracuje), tak asi nejjednodušší řešení je udělat vlastní typ listu pro tohle řešení 

public class DoubleArrayList extends ArrayList<int[][]>
{
    @Override
    public boolean contains(Object o)
    {
        if (o instanceof int[]) {
            Iterator<int[][]> it = iterator();

            while (it.hasNext()) {
                int[][] da = it.next();

                for (int[] arr : da) {
                    if (arr.equals(o)) {
                        return true;
                    }
                }
            }
        }
        return false;
    }
}

V tomhle případě potom můžeš zanechat původní implementaci, jen nahradíš instanci listu 

// z
List<int[][]> list = new ArrayList<>();

// na
List<int[][]> list = new DoubleArrayList();
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 63 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý