classMain {publicstaticintswap(int... args) { return args[0]; }publicstaticvoidmain(String[] args) {int a =5;int b =10; a =swap(b, b = a); // a = 10, b = 5 }}
Swapping array elements - 교환할 값이 배열의 요소이면 배열인덱스로 접근해서 교환하는 메서드를 짤 수 있다.
Swapping Objects, AtomicInteger - 객체로 wrapping해서 내부 값을 교환하는 방식
classMain {publicstaticvoidswap(IntRef a,IntRef b) {int tmp =a.val;a.val=b.val;b.val= tmp; }publicstaticvoidmain(String[] args) {IntRef a =newIntRef(5);IntRef b =newIntRef(10);swap(a, b); // a.val = 10, b.val = 5 }}
java.util.concurrent.atomic.AtomicInteger로 wrapping할 수도 있다.
importjava.util.concurrent.atomic.AtomicInteger;classMain {publicstaticvoidswap(AtomicInteger a,AtomicInteger b) {a.set(b.getAndSet(a.get())); }publicstaticvoidmain(String[] args) {AtomicInteger a =newAtomicInteger(5);AtomicInteger b =newAtomicInteger(10);swap(a, b); }}
Collections.swap(list, i, j);
public static void swap(List<?> list, int i, int j)