sortering av lista
Hej, hur kommer det sig att metoden r1 inte returnerar en omvänd lista såsom den önskas göra (den skall alltså egentligen returnera en lista med värdena 5,4,3,2,1 men returnerar istället samma ursprungliga värden)?
Parametern a är en kopia av referensen till den anropande kodens vektor. Kopian är bara tillgänglig i metoden och den anropande kodens referens till vektorn ändras inte. I r1 ändras referensen i metoden men den förändringen påverkar inte den anropande kodens referens. I r2 sätts värden i den anropande kodens vektorelement och det är därför den gör "vad den ska".
Ändrar man värden i en metod är det kutym att returnera värdet i metoden. Det blir lättare att läsa och förstå då = mindre fel.
Tack så mycket för förklaringen. Tyvärr förstår jag forfarande inte. Varför påverkar inte metoden ändringen av vektorn i r1?
I r1 så tilldelar du parametern a referensen till temp så att i metoden så pekar a på temp-arrayen. När exekveringen av r1 är klar och hoppar tillbaks till anropen av r1 så återställs värdet i a till vad det var vid anropet, dvs a pekar på den orörda vektorn som den pekade på när r1 anropades. I r2 så ändras den ursprungliga vektorn genom referensen a (som där inte har ändrats)
Klarnade det?
Jag ska förtydliga lite.
När anropet ArrayHandler.r1(nbrs1) görs så skickar runtime-miljön in en kopia av referensen till vektorn nbrs1. Vi kan säga att det är adressen även om det inte är riktigt sant. I nbrs1 skapas temp och manipuleras och slutligen så tilldelas parametern a värdet av referensen till tmp. Observera att a är en lokal variabel och den urspungliga referensen till nbrs1 aldrig har rörts, det är kopian i parametern som skrivits över och innehållet i nbrs1 har inte heller rörts så från huvudspårets synpunkt så där har inget ändrats.
I r2 däremot så manipuleras innehållet i nbrs2 direkt via referensen och DET kan inte kompilatorn återställa (för den är inte konstruerad så) så där är ändringen permanent kan man säg.
Hoppas det klarnar av min förklaring
Absolut! Det blev mycket tydligare nu. Tack så mycket för din tid och hjälp.