Java ArrayList!|Programmering / Grafisk formgivning|Forum|Nordichardware

Search
Forum Scope


Match



Forum Options



Minimum search word length is 3 characters - maximum search word length is 84 characters
Lost password?
The forums are currently locked and only available for read only access
sp_Feed sp_TopicIcon
Java ArrayList!
Kickio
Nu vet jag hur man gör inlägg!
Medlem
Forum Posts: 45
Member Since:
January 29, 2005
sp_UserOfflineSmall Offline
1
March 31, 2008 - 7:52 pm
sp_Permalink sp_Print

Jag har en arraylist ArrayList list = new ArrayList();
jag behöver en metod med 3 argument, listan, int nr1 och int nr2
dessa intar innehåller intervallet på den listan jag har, behöver denna funktion för att kunna vänta på siffrorna som:
1,2,3,4,5,6,7 om intervallet är 2-5 så skall de bli 1,5,4,3,2,6,7
Kan nån ge mig nån ide på hur jag skall börja ifall jag vill bygga denna metod rekursivt?

Xun
Kommer du hit ofta?
Medlem
Forum Posts: 305
Member Since:
November 19, 2004
sp_UserOfflineSmall Offline
1187204
March 31, 2008 - 11:13 pm
sp_Permalink sp_Print

public void asdf(ArrayList list, int a, int b) {
Integer tmp = list.get(a);
list.set(a, list.get(b));
list.set(b, tmp);
}

/* jag är väldigt trött atm, så det här kanske inte ens är i närheten av vad du söker efter 😛
Jag hoppas det fungerar
Fast, rekursion har jag ingen aning om hur du ska använda, känns bara onödigt i det här fallet :/ */

jonaz
Kommer du hit ofta?
Medlem
Forum Posts: 940
Member Since:
May 8, 2001
sp_UserOfflineSmall Offline
1187228
April 1, 2008 - 9:14 am
sp_Permalink sp_Print

Lånar lite kod av tidigare postare, denna kod borde funka MEN det är bara de yttersta talen som byter plats. Därför behöver man nu göra ett rekursivt anrop:


public void asdf(ArrayList<Integer> list, int a, int b) {
Integer tmp = list.get(a-1);
list.set(a, list.get(b-1));
list.set(b, tmp);
// Anropa sig själv om det finns minst 2 tal mellan a och b (annars kan de ju inte byta plats)
if(b - a >= 3) {
asdf(list, a++, b--);
}
}

OBS! Jag har inte testat detta men logiskt borde det vara rätt!?

EDIT: Såg att indexeringen inte var rätt i koden jag snodde, index börjar ju på noll så man måste dra 1 från a & b när man hämtar talen från listan!

Desktop: Gigabyte GA-MA770-DS3 | AMD Phenom II 955 BE | 8GB PC6400 | Samsung 1TB + 500GB | Powercolor HD3870
3DMark 2006: 11932 3DMark Vantage: P5137
Laptop: Macbook Pro 2012 | 8GB | Samsung 830 128GB SSD
HTPC: Mac Mini | 3GB | 500GB

Forum Timezone: Europe/Stockholm
Most Users Ever Online: 1030
Currently Online:
Guest(s) 346
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Andreas Galistel: 16287
Jonas Klar: 15897
ilg@dd: 10810
Nyhet: 10607
Mind: 10550
Ctrl: 10355
Gueno: 9881
Guest: 9344
Snorch: 8881
Callister: 8468
Newest Members:
PetrbonFU PetrbonFU
Karine Bembry
Dolores Mcdaniels
Anibal McLeish
Francisca Alt
Alfie Everhart
Lester Huitt
Orlando Jorgensen
Mikki Lundgren
Dakota Kozlowski
Forum Stats:
Groups: 11
Forums: 59
Topics: 146630
Posts: 1300967

 

Member Stats:
Guest Posters: 2
Members: 79425
Moderators: 0
Admins: 11
Administrators: nordicadmin, Henrik Berntsson, Anton Karmehed, Carl Holmberg, Joel Oscarsson, Mikael Linnér, Mikael Schwartz, Andreas Paulsson, Nickebjrk, Mattias Pettersson, EmxL