swap in Java programmieren?

Status
Nicht offen für weitere Antworten.

xyz

Mitglied
Hallo, wie kann man swap unter Java programmieren?

In C/C++ geht es ja so:
Code:
void swap(int& a, int& b) {  
   int temp = a;
   a = b;
   b = temp;
}

 swap(x, y);
aber Java kann ja keine Zeiger.

Viele Grüße
 
Danke für die Antwort. Leider ging die an dem, was ich wissen wollte vorbei, daher nun nochmal (hoffentlich präzise genug): Was ist der Sinn den Inhalt der Variablen a und b zu vertauschen !?
 
geht nur mit Instanzvariablen. Swap Methode auf normalen Variablen (auch mit Integers) ist nicht möglich, da Java kein Call by Reference kennt (siehe FAQ )

ansonsten gehts natürlich im lokalen Block (also nicht in Methode auslagern)

z.B größer-kleiner Vergleiche um ein kleines Beispiel zu nennen.
da gibts doch < oder > :wink:
 
in Java ist eine echte swap funktion definitiv UNMÖGLICH, a und b zeigen nach swap immer auf das gleiche objekt (oder haben den gleichen primitiven wert)
Code:
a=3;
b=5;
swap(a,b); // es ist völlig egal, was da drin passiert
// a ist 3
// b ist 5
was natürlich immer geht ist der Umweg über Referenzen
auf veränderliche Objekte
Code:
a=new Box<Integer>(3); // box ist ein einfacher "Holder"
b=new Box<Integer>(5);
swap(a,b);
// a.getValue() liefert 5
// b.getValue() liefert 3
 
ich hab da was auf galileocomputing gefunden:

Code:
int x = 12, y = 49;
x ^= y;  // x = x ^ y
y ^= x;  // y = y ^ x
x ^= y;  // x = x ^ y
System.out.println( x + " " + y);  // Ausgabe ist: 49 12

also das tauschen in einer methode geht damit natürlich auch nicht, aber es ist eine elegant emöglichkeit ohne eine temporäre variable zu verwenden...
 
@clemson:
es stellt sich nur die Frage welche Methode intuitiver ist und auch noch verständlich, wenn man den Code nach langer zeit wieder betrachtet....
 
Da hät ich auch noch einen ala Marke Eigenbau
Code:
int x = 24;
int y = 545;
        
x = y + (y = x) - y;

System.out.println(x); // 545
System.out.println(y); // 24

Nur so zum Posen :wink:
 
grml - wenn ihr schon glorreiche Tips gebt wie man das lokal lösen kann
Code:
int x = 1;
int y = 2;
int tmp = x;
x = y;
y = tmp;
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben