Permalänk

Java problem (arraylist)

Löst problem. Mod kan ta bort tråden.

Permalänk
Medlem
Skrivet av That Maniac:

Hej!
ArrayList<ArrayList<Card>> List = new Arraylist<>();
Men detta fungerar inte när jag ska skriva över de gamla med:
Deck = List.get(0);

Din ArrayList med referensen List innehåller ArrayList-objekt, dvs din lista innehåller listor. De listorna innehåller i sin tur Card objekt. Nu vet jag inte riktigt vad det är du är ute efter men om du vill hämta den första listan och sedan hämta det första kortet i den listan kan du göra såhär:

ArrayList<Card> cardList = List.get(0);
Deck = cardList.get(0);

eller bara mer kortfattat
Deck = list.get(0).get(0);

Sen vet jag inte riktigt var du är ute efter, om dina listor ska innehålla tidigare stadier av spelet kanske en kö är bättre?

För att till fullo förstå dessa listorna kan det vara bra att lära dig lite om datastrukturerna bakom. De mest basic är ArrayList som är byggt på arrays, men väldigt användbara är LinkedList som är byggt på en länkad lista (referenslänkar). För lite mer avancerad programmering eller om du bara behöver hantera många objekt kan strukturer så som heapar, träd, köer, hashtabeller osv vara till hjälp. Här kommer en liten lista till hjälp
HashSet/Map snabb insättning/uttagning och sökning
TreeSet/Map alltid sorterad
ArrayList/Linkedlist lätta att förstå och använda men långsamma på det mesta
Köer, snabba att sätta in i början/slutet
osv..

Hoppas det var till någon hjälp

EDIT: Såg att du löst problemet och att du vill att inlägget ska tas bort, men det är bättre ifall det är kvar och du skriver hur du löste det så att andra med samma eller liknande problem kan hitta hjälp istället för att själva behöva fråga och vänta på svar

Permalänk

Updatering: Jag insåg att det jag lägger i listan som innehåller de andra listorna uppdateras i och med att de andra listorna gör det. Har ännu inte hittat en lösning på hur jag kan spara äldre instanser av listorna som jag sedan kan läsa ifrån och skriva över nya listor med. Jag har dock valt att strunta i den funktionen.

Permalänk
Medlem
Skrivet av That Maniac:

Updatering: Jag insåg att det jag lägger i listan som innehåller de andra listorna uppdateras i och med att de andra listorna gör det. Har ännu inte hittat en lösning på hur jag kan spara äldre instanser av listorna som jag sedan kan läsa ifrån och skriva över nya listor med. Jag har dock valt att strunta i den funktionen.

Ska du spara älder instanser av listorna får du göra en funktion som kopierar över listan alltså en

public Arraylist copy(Arraylist from){ Arraylist new = new Arraylist(); for(int x = 0; x<from.length(); x++){ temp = from.get(x); new.add(temp); } return new; }

Koden är väldigt dåligt skriven och funkar säkert inte utan är bara för att visa hur du kan göra för att kopiera en array istället för att referera till den. Tror dett finns något "addAll" kommando också för listor som då tar alla element i en mängt och lägger till.

Visa signatur

In the end what separates a man from a slave?
Money? Power? No... A man chooses, a slave obeys.
ASUS Z170M-PLUS || Intel Core i7 6700k @ 4,7GHz || 64GB 2133MHz Corsair RAM || MSI NVIDIA RTX 2070 Gaming Z 8GB || Bifenix Prodigy M || 2x CZ TR150 480GB RAID 0 || BeQuiet DarkRock Pro

Permalänk
Skrivet av lollol7:

Ska du spara älder instanser av listorna får du göra en funktion som kopierar över listan alltså en

public Arraylist copy(Arraylist from){ Arraylist new = new Arraylist(); for(int x = 0; x<from.length(); x++){ temp = from.get(x); new.add(temp); } return new; }

Koden är väldigt dåligt skriven och funkar säkert inte utan är bara för att visa hur du kan göra för att kopiera en array istället för att referera till den. Tror dett finns något "addAll" kommando också för listor som då tar alla element i en mängt och lägger till.

Saken är den att i kortspelet som jag gör så har jag ungefär 13 arraylists. Och jag vill säkert ha flera kopior, så det blir många listor att skapa. Därför valde jag att strunta i detta just nu. Det är inget super-seriöst spel jag håller på med, bara för att det är kul

Permalänk
Medlem
Skrivet av That Maniac:

Löst problem. Mod kan ta bort tråden.

Snälla, behåll det du skrev så att andra i framtiden också kan lösa sina problem.

Visa signatur

CPU: Ryzen 9 3900x Noctua NH-D14 MOBO: TUF Gaming X570-PLUS GPU: GTX 980 RAM: 32 GB 3200 MHz Chassi: R4 PSU: Corsair AX860 Hörlurar: SteelSeries 840 Mus: Logitech G502 Lightspeed V.v. nämn eller citera mig för att få svar.

Permalänk
Avstängd
Skrivet av Haptic:

Snälla, behåll det du skrev så att andra i framtiden också kan lösa sina problem.

Visst är det irriterande? Jag blir irriterad när de skriver "jag löste det" och sen får man inte veta hur de gjorde. Asjobbigt när man googlar runt och har exakt samma fråga.