2011-11-13, 18:58
  #1
Medlem
Eclairs avatar
Hej!

Jag kan Python sedan tidigare och hller nu p och lr mig java.
Det hr med listor eller s kallade arrays konfunderar mig dock. Jag har letat men fr det nd inte riktigt att funka s jag vnder mig nu till er.

Vad r motsvarande p java?

skapa lista:
lista = []

lgg till element i lista:
lista.append(i)

Kontrollera vad ett index i en lista har fr element:
x=lista[i]

Det jag har kikat p r s kallade ArrayList men vet inte om det r det jag ska anvnda? Mste man frdefiniera storleken p listorna i java?
Citera
2011-11-13, 20:22
  #2
Medlem
Jooncs avatar
ArrayList gr nog bra. Om du vill deklarera en ny ArrayList som innehller objekt av typen Obj s gr du s hr:
ArrayList<Obj> list = new ArrayList<Obj>();
I en ArrayList behver du inte frdefiniera storleken. Om du vill veta hur du anvnder en ArrayList kan du titta hr. De vanligast anvnda metoderna r kanske:
add(int index, Object element) - lgger till p slutet (motsvarar din appen)
get(int index) - returnerar elemented p plats index (motsvarar din list[i])
size() - returnerar storleken (antal element)
Om du vill ha en ArrayList med primitiva datatyper (tex int) anvnder du wrapper klassen for int:
ArrayList<Integer>
Citera
2011-11-13, 20:24
  #3
Moderator
Protons avatar
Citat:
Ursprungligen postat av Eclair
Hej!

Jag kan Python sedan tidigare och hller nu p och lr mig java.
Det hr med listor eller s kallade arrays konfunderar mig dock. Jag har letat men fr det nd inte riktigt att funka s jag vnder mig nu till er.

Vad r motsvarande p java?

skapa lista:
lista = []

lgg till element i lista:
lista.append(i)

Kontrollera vad ett index i en lista har fr element:
x=lista[i]

Det jag har kikat p r s kallade ArrayList men vet inte om det r det jag ska anvnda? Mste man frdefiniera storleken p listorna i java?
Listor och arrayer beter sej olika i java, frmst med avseende p att det du refererar till som "listor" r datastrukturer fr att hlla objektreferenser, arrayer kan hlla objektreferenser men ven primitiver. De datastrukturer som kan hlla objektreferenser brukar normalt sett vara de som implementerar interfacet List<E>.

En array har en frdefinierad storlek vid initieringen av densamma, det ser ut sh till exempel:
Kod:
int[] someArray = new int[4]; 
vilket kommer ge dej en array som du kan referera till som someArray som kommer innehlla 4 poster, den kan aldrig innehlla mer n dessa 4 stycken.

En ArrayList r aningen mer flexibel nr det gller att hantera objektreferenser, gr iofs att stoppa i heltal i den med med tanke p att java numera har str fr auto(un)boxing. Dessutom har en ArrayList inte ett fixed antal platser, den kommer vxa och krympa allt eftersom du tar bort eller lgger till saker i den.

Eftersom ArrayList implementerar interfacet List<E> s lgger man till saker i den med metoden add. Kolla i java-apiet s ser du ju hur den ska se ut. En simpel initiering av en ArrayList med Strings ser ut shr:
Kod:
ArrayList<StringmyList = new ArrayList<String>(); 
Hr sger vi att vi vill ha en ArrayList och vi sger ven att den endast kommer innehlla objektreferenser till String, den kommer inte kunna ngot annat. Frdelen med denna "genericitet" r att du slipper explicit typa om de Object-referenser den normalt sett skulle gett ifrn sej med get(int i)-metoden.

Arrayer anvnder sej av indexoperatorn som du redan sett fr tkomst till en specifik plats i arrayen, listor andra sidan anvnder metoden get() fr att lsa ut ett vrde frn en plats, dessutom finns det en set-metod som kan stta ett element p en valfri plats till en valfri objektreferens med. Det normala nr man jobbar med ArrayList IMHO r att man anvnder add fr att fylla p den i exempelvis en loop.
Citera
2011-11-13, 20:25
  #4
Medlem
Aardwarks avatar
Ja, javas motsvarighet till pythons listor r vanligen ArrayList.

ArrayList list = new ArrayList(); // list = []
list.add(x); // list.append(x), x r en subklass av Object
list.get(0) ;// list[0]
list.set(0, newX); // list[0] = newX. Inte samma som add; listan behller sin storlek

Det r dock den "gamla" syntaxen, nufrtiden har man mjligheten att typa sin lista, s att bara en viss typ (eller subklasser av typen) r i listan. D skriver man exempelvis ArrayList<MyType> list = new ArrayList<MyType>();

Hr r dokumentationen fr ArrayList.

edit: Lustigt att det kommer 3 svar p samma gng.. ketchupeffekten!
__________________
Senast redigerad av Aardwark 2011-11-13 kl. 20:29.
Citera
2011-11-14, 21:21
  #5
Medlem
Eclairs avatar
Tackar bockar fr alla bra svar
Programmet r nu frdigstllt.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in