CodeGym /Java Blog /Acak /Bagaimana cara menukar objek di Jawa?
John Squirrels
Level 41
San Francisco

Bagaimana cara menukar objek di Jawa?

Dipublikasikan di grup Acak
Menukar objek adalah salah satu tindakan paling populer dalam pemrograman. Ini sangat berguna dalam menyortir. Apa yang terjadi dalam pertukaran adalah dua variabel bertukar nilainya. Pada artikel ini, kita mempelajari cara menukar objek di Java dalam dua kasus berbeda. Satu menukar objek independen dan yang lainnya menukar dua objek dalam Daftar atau Array. Pertama-tama mari kita periksa pertukaran objek independen.Bagaimana cara menukar objek di Jawa?  - 1

Menukar objek berbeda dengan menukar tipe data primitif

Salah satu metode umum yang digunakan untuk menukar nilai primitif adalah menggunakan variabel temporal. Namun, Anda tahu Java menggunakan “Pass by Value” saat meneruskan parameter ke suatu metode. Oleh karena itu, bertukar objek tidak akan berfungsi seperti yang Anda harapkan dengan metode ini. Contoh berikut akan menunjukkannya.

public class ObjectSwapper {
    public static void main(String[] args) {
        InnerClass obj1 = new InnerClass(12345);
        InnerClass obj2 = new InnerClass(11111);
        swap(obj1, obj2);
        System.out.println("Obj1 ID value : " + obj1.id + "\n" + "Obj2 ID value :  " + obj2.id);
    }
    static void swap(InnerClass x, InnerClass y) {
        InnerClass temp;
        temp = x;
        x = y;
        y = temp;
    }
    static class InnerClass {
        public int id;
        public InnerClass(int Id) {
            this.id = Id;
        }
    }
}
Outputnya: Bagaimana cara menukar objek di Jawa?  - 2Tidak ada pertukaran! Saat kita memanggil metode swap dan meneruskan objek, kita meneruskan salinan objek, dengan semua nilai properti. Inilah alasan mengapa disebut “Pass by Value”. Metode swap sebenarnya menukar objek yang hanya memengaruhi salinan objek aslinya. Jadi objek aslinya tetap tidak berubah. Solusi untuk ini adalah dengan menggunakan kelas pembungkus untuk membungkus kedua objek.

Menukar objek dengan kelas pembungkus


public class ObjectSwapper {
    public static void main(String[] args) {
 
        InnerClass obj1 = new InnerClass(12345);
        InnerClass obj2 = new InnerClass(11111);
        objectWrapper wrapperObj1 = new objectWrapper(obj1);
        objectWrapper wrapperObj2 = new objectWrapper(obj2);
        // Values before swapping
        System.out.println("WrapperObj1 InncerClass ID value : " + wrapperObj1.innerObject.id + "\n" + "WrapperObj2 InncerClass ID value : "
                + wrapperObj2.innerObject.id + "\n");
        
        swap(wrapperObj1, wrapperObj2);
        
        // Values after swapping
        System.out.println("WrapperObj1 InncerClass ID value : " + wrapperObj1.innerObject.id + "\n" + "WrapperObj2 InncerClass ID value : "
                + wrapperObj2.innerObject.id);
    }
 
       static void swap(objectWrapper wrapperObj1, objectWrapper wrapperObj2) {
        InnerClass temp;
        temp = wrapperObj1.innerObject;
        wrapperObj1.innerObject = wrapperObj2.innerObject;
        wrapperObj2.innerObject = temp;
    }
 
    static class InnerClass {
        public int id;
        public InnerClass(int Id) {
            id = Id;
        }
    }
 
    static class objectWrapper {
        InnerClass innerObject;
        public objectWrapper(InnerClass objInnner) {
            this.innerObject = objInnner;
        }
    }
}
Di sini kami menggunakan kelas pembungkus yang memiliki properti dari jenis objek yang perlu kami tukar. Dengan menggunakan metode swap sederhana, ini menukar konten objek InnerClass dari objek kelas wrapper. Untuk implementasi lebih lanjut dari objek InnerClass yang ditukar, kita dapat menggunakan wrapperObj1.xyz dan wrapperObj2.xyz. Hasil:Bagaimana cara menukar objek di Jawa?  - 3

Metode swap() bawaan di Java

Kelas Java Collections Framework memiliki metode bawaan untuk menukar elemen yang disebut swap() . Java.util adalah kelas utilitas yang berisi metode statis yang dapat beroperasi pada elemen seperti Daftar dari antarmuka Koleksi. Menggunakan metode swap jauh lebih mudah daripada contoh yang telah kita bahas sebelumnya. Metode swap() adalah metode statis dan karenanya Anda memanggilnya dengan nama kelas sebagai Collections.swap() . Jenis kembalian dari metode swap() adalah batal sehingga tidak akan mengembalikan apapun. Anda harus meneruskan tiga argumen ke metode swap() . Periksa catatan di bawah ini.

swap(List<?> list, int a, int b)
Parameter:
  • daftar - daftar berisi elemen yang kita tukar.
  • a — indeks elemen yang akan ditukar .
  • b — indeks elemen lain yang akan ditukar .
Perhatikan bahwa metode ini akan melontarkan IndexOutOfBoundsException jika a atau b berada di luar rentang ukuran daftar. Indeks maksimum daftar adalah kurang dari ukuran daftar. Setiap nilai indeks lebih dari itu akan menyebabkan IndexOutOfBoundsException dibuang. Contoh cara menggunakan metode swap pada ArrayList ditunjukkan di bawah ini.

swap() metode pada ArrayList


import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ArrayListSwapper {
    public static void main(String[] args) {
        try {
            List fruits = new ArrayList();
            fruits.add("Mango");
            fruits.add("Papaya");
            fruits.add("Apple");
            fruits.add("Orange");
            fruits.add("Watermelon");
            fruits.add("Bael");
            System.out.println("Before swapping : " + fruits);
         //using Collection.swap() method
            Collections.swap(fruits, 2, 5);
            System.out.println("After swapping : " + fruits);
        } catch (IndexOutOfBoundsException e) {
            System.out.println("Index Out of Bound Exception thrown : " + e);
        }
    }
}
ArrayList buah mengandung enam elemen. Kami menukar elemen ke-2 dan ke-5 menggunakan metode function swap() . Praktik terbaik adalah menulis metode swap() di dalam blok try-catch karena dapat melontarkan IndexOutOfBoundsException pada waktu proses. Keluarannya: Bagaimana cara menukar objek di Jawa?  - 4Jika kita melewatkan '2' dan '8' sebagai indeks, aplikasi akan melontarkan pengecualian karena ukuran daftarnya adalah enam.

Collections.swap(fruits, 2, 8);
Outputnya adalah:Bagaimana cara menukar objek di Jawa?  - 5

Kesimpulan

Dalam tutorial ini, kita membahas beberapa teknik swapping yang digunakan di Java. Salah satunya menggunakan kelas wrapper dan yang lainnya menggunakan metode Collection.swap() . Penting untuk diingat bahwa penanganan eksepsi harus dilakukan saat menggunakan fungsi swap() karena ia melontarkan eksepsi runtime.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION