» »

[Java] Integer ali int za List

[Java] Integer ali int za List

Yacked2 ::

Pozdravljeni,

vseskozi sem pri pisanju uporabljal int x = 5 in tako naprej. Sedaj pa nujno rabim uporabit ArrayList, ki kot vrsto sprejme samo Integer. Z listi je veliko dela (3D graf), zato me zanima ali je sploh smiselno deklarirati x kot int, ali naj že takoj naredim Integer x = 5, da se izogrem pretvarjano iz int v Integer in obratno.

Kako je z Integer[] v primerjavi z int[] itd...

Hvala,
Yacked2
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

kr?en ::

http://stackoverflow.com/questions/8660...

Collectioni v javi sprejmejo samo objekte.

Zgodovina sprememb…

  • spremenil: kr?en ()

njyngs ::

Zakaj bi bilo z listi veliko dela? Uporabi Integer že v štartu in čim manj pretvarjaj. Pa pazi pri primerjavah oz. pogojih: uporabi nekInteger.intValue() == 1, namesto nekInteger == 1

Yacked2 ::

kr?en je izjavil:

http://stackoverflow.com/questions/8660...

Collectioni v javi sprejmejo samo objekte.


To sem sam ugotovil ja :)

njyngs je izjavil:

Zakaj bi bilo z listi veliko dela? Uporabi Integer že v štartu in čim manj pretvarjaj. Pa pazi pri primerjavah oz. pogojih: uporabi nekInteger.intValue() == 1, namesto nekInteger == 1


Ok, tak je plan, hvala!
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

Spura ::

Ce si resen glede performancea moras itak int arraye uporabljat.

Yacked2 ::

Spura je izjavil:

Ce si resen glede performancea moras itak int arraye uporabljat.


Velikost tabele je 10^9 x 10^9, od tega je označenih največ 10^5 polj. Se mi zdi, da je še vedno boljše listo uporabit.
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

Sergio ::

Kaj pa kaksen eksteren library?

http://pcj.sourceforge.net/
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.

noraguta ::

Načeloma ti bounds checke če niso potrebni sedaj ven pomeče že kompajlr.
Pust' ot pobyedy k pobyedye vyedyot!

Yacked2 ::

Omejen glede knjižnic,

sedaj imam takole ArrayList Integer[] l samo problem je pri l.contains(element), contains mi ne deluje, se moram ročno s for zanko sprehoditi čez cel arrayList in primerjati Array.Equals vsakega posebej.
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

Zgodovina sprememb…

  • spremenil: Yacked2 ()

Spura ::

Equals za arraye vrne true ce gre za isti objekt. Contains uporablja equals.

MrStein ::

njyngs je izjavil:


Pa pazi pri primerjavah oz. pogojih: uporabi nekInteger.intValue() == 1, namesto nekInteger == 1

Ni treba, to se avtomatsko naredi (unboxing).
Problem je le, če ne paziš in testiraš enakost dveh Integer objektov.

Integer a;
Integer b;

if(a==33) // to primerja vrednost a z 33 (ekvivalent a.intValue()==33)
if(b==-2) // to primerja vrednost b z -2
if(a==b) // to primerja ali gre za ista objekta, ne pa vrednosti
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

Yacked2 ::

Torej če imam:

ArrayList<Integer[]> seznam


v katerega dam:

Integer[] element = new Integer[]{5,6}


z:

seznam.add(element)


ter nato pogledam če ta seznam vključuje drug element:

Integer[] drugi = new Integer[]{5,6}


Tega z contain ne morem storiti, ker drugi ni enak element. Torej moram napisati funkcijo:

public static boolean check (ArrayList<Integer[]> seznam, Integer[] element)

ki preveri za vsakega posebej. Ali je kakšna druga varijanta ?
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

noraguta ::

Overridat morš equal metodo.
mislm implementirat. Ampak za tvoj primer vzem kar kompleksna stevila pa je mas primerov kolk ces po netu.
Pust' ot pobyedy k pobyedye vyedyot!

Zgodovina sprememb…

  • spremenilo: noraguta ()

Spura ::

Ne mores overridat equals na arrayih.

Ce si len lahko naredis

List<List<Integer>> l = new ArrayList<List<Integer>>();
l.add(Arrays.asList(new Integer[]{5,6}));

l.contains(Arrays.asList(new Integer[]{5,6})); // vrne true

Sicer pa je int[] object in tako je lahko povsem normalno parameter za generike. List<int[]> lahko komot deklariras.

noraguta ::

Zakaj bi na arrayu to pocel to nadris na razredu tenzorja, v tem primeru dvojca. To nucaš tud za iteratorje po listu in kompajlerju omogoč da ven zmece preverjanje mej kjer je to mogoce.
Pust' ot pobyedy k pobyedye vyedyot!


Vredno ogleda ...

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

[Java] array v voidu

Oddelek: Programiranje
102302 (2001) Spura
»

[Android] Nov tip shranjevanja slike

Oddelek: Programiranje
142193 (1317) urosz
»

[Java] Podatkovni tip

Oddelek: Programiranje
233831 (3483) piki12
»

Sortiranje po večih atributih, java

Oddelek: Programiranje
161691 (1457) marjan_h
»

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

Oddelek: Programiranje
51121 (1045) commissar

Več podobnih tem