Avatar billede morw Nybegynder
26. september 2002 - 20:43 Der er 15 kommentarer og
2 løsninger

ArrayList

Jeg har oprettet en ArrayList:

ArrayList registrering = new ArrayList();

Smidt ting i:

registrering.add("1");
registrering.add("3");
registrering.add("3");

Men jeg kan ikke får værdierne ud som int igen:

int temp = registrering.get(0); //(virker ikke)

Hvordan skal den klares?
Avatar billede codemon Nybegynder
26. september 2002 - 20:47 #1
Det du har puttet i er strenge "1"
Du skal bruge int's wrapper klasse Integer

registrering.add(new Integer(1));

int temp = ((Integer)registrering.get(0)).intValue();
Avatar billede codemon Nybegynder
26. september 2002 - 20:51 #2
Det er fordi ArrayList modtager objekter. Den kan ikke modtage primitive datatyper, men sun har lavet wrapper klasser til alle primitive typer som man kan wrappe om dem så de bliver objekter. Kig lidt på dem, de er nyttige.

Hvis du fx vil konvertere en String til int kan Integer klassen det med

String talSomStreng = "1";
int tal = Integer.parseInt(talSomStreng);

også er det i øvrigt langt pænere programmering at refere klasser på deres interface type.

List registrering = new ArrayList();
Avatar billede morw Nybegynder
26. september 2002 - 21:03 #3
Jeg er lige startet på java og kommer fra PHP så alt virker lidt underligt.

int temp = ((Integer)registrering.get(level)).intValue();
System.out.println ("Reg" +  (level+1) + ": " + muligheder[temp]);

Kan dette ikke gøres på en kortere måde?

Level er bare en int fra en for-løkke.


Hvad mener du med interface type? Hvad gør List i forhold til ArrayList?
Avatar billede disky Nybegynder
26. september 2002 - 21:10 #4
En ArrayList kan kun gemme objecter ikke primitive typer.

I java kører man heldigvis med stringente datatyper, ikke som i php hvor de bare er blandet rundt i et kæmpe kaos.

Og hvad betyde den smule kode ? når man tilgengæld har 100% styr på typerne
Avatar billede morw Nybegynder
26. september 2002 - 21:15 #5
disky> Jeg håber jeg har samme syn efter et par måneder med java.
Avatar billede codemon Nybegynder
26. september 2002 - 21:20 #6
Hvis du skal programmere stærkt javakode så får du lige videresendt en anbefaling fra disky.

Læs bogen Effective Java Programming Language Guide af Joshua Bloch.

disky tak for anbefalingen, bogen er simpelt hen kanon. Nogle gutter fra Suns java team ville vist haft stor gavn af at læse den :)
Avatar billede disky Nybegynder
26. september 2002 - 21:41 #7
Det glæder mig du kan lide den, jeg synes også den er GENIAL.
Skal vi ikke bare sige hans foredrag på Javaone 2001 var virkeligt lærerigt.
Avatar billede morw Nybegynder
26. september 2002 - 21:45 #8
Kan i ikke lige forklare det med interface type:

List registrering = new ArrayList();
Avatar billede codemon Nybegynder
26. september 2002 - 21:59 #9
Et interface i java er en kontrakt til de klasser der implementerer det, der sikre at den klasse implementerer nogle metoder.

i java er der ikke mutlibel arv (der kan kun arves fra en klasse) men man kan godt implementerer flere interfaces.

Interfaces er som en abstrakt klasse uden variabel erklæringer og kun med abstrakte metoder. Ellers virker det som arv. dvs at du referere til en overordnet type som kan have flere implementationer.

fx

List minArrayList = new ArrayList();
List minVector = new ArrayList();
List minListe = new ArrayList();
// senere i programmet
minListe = new Vector();

Eller endnu bedre, en metode der modtager List i stedet for Vector

public void addList(List l)

Til den metode kan der overføres ethvert objekt fra en klasse der implementere interfacet List (ArrayList, LinkedList, Vector) eller sin helt egen klasse der implementerer List interfacet.
Avatar billede codemon Nybegynder
26. september 2002 - 22:00 #10
List minVector = new ArrayList(); skulle have været
List minVector = new Vector();
Avatar billede codemon Nybegynder
26. september 2002 - 22:03 #11
Det foredrag ville jeg gerne have hørt, kan man læse det nogle steder?
Avatar billede morw Nybegynder
26. september 2002 - 22:12 #12
Hvis jeg brugere List får jeg fejl:

C:\morten\cbs\dat\javakode\Ugeopgave_O1.java:23: cannot resolve symbol
symbol  : class List 
location: class prog
        List registrering = new ArrayList();
                ^
1 error
Avatar billede codemon Nybegynder
26. september 2002 - 22:16 #13
import java.util.*;

Øverst i programmet (efter evt. package dekleration)
Avatar billede morw Nybegynder
26. september 2002 - 22:22 #14
Tak - håber det giver mening på et tidspunkt
Avatar billede codemon Nybegynder
26. september 2002 - 22:30 #15
Kig evt. på http://www.javabog.dk/
Avatar billede bearhugx Nybegynder
27. september 2002 - 07:27 #16
Efterhånden har jeg hørt en del prise bogen "Effective Java Programming Language Guide" -

er Effective Java Programming Language Guide mulig at hente fra nettet, eller er min eneste mulighed at gå ud og købe bogen ???

/Søren Munk Skrøder
Avatar billede disky Nybegynder
27. september 2002 - 07:29 #17
Jeg ved det faktisk ikke, men den er pengene værd.
Det billigste sted er her:
http://www.bookshop.co.uk/ser/serdsp.asp?shop=20037&isbn=0201310058&DB=220

Og hvis du bestiller via den, støtter du stakkels disky :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester