Java Programming

Maîtriser les techniques d’échange en Java

Spread the love

L’échange d’éléments est une tâche courante en programmation, cruciale pour des algorithmes comme le tri et diverses manipulations de données. L’approche Java pour échanger des éléments dépend fortement de la mutabilité et de la structure du type de données. Cet article explore des techniques efficaces pour échanger des éléments dans différents contextes Java.

Table des matières

  1. Échanger des éléments dans une liste Java
  2. Échanger des caractères dans une chaîne Java
  3. Échanger des objets en Java

Échanger des éléments dans une liste Java

Pour les listes, une approche simple consiste à utiliser une variable temporaire. Cette méthode échange efficacement les éléments aux indices spécifiés dans la liste.


import java.util.List;
import java.util.ArrayList;

public class ListSwap {

    public static <T> void swap(List<T> list, int i, int j) {
        if (i < 0 || i >= list.size() || j < 0 || j >= list.size()) {
            throw new IndexOutOfBoundsException("Indices hors limites");
        }
        T temp = list.get(i);
        list.set(i, list.get(j));
        list.set(j, temp);
    }

    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>(List.of(1, 2, 3, 4, 5));
        swap(numbers, 1, 3); // Échange les éléments aux indices 1 et 3
        System.out.println(numbers); // Sortie : [1, 4, 3, 2, 5]
    }
}

Cette méthode générique gère différents types de listes. La gestion des erreurs incluse prévient les problèmes d’index courants. Son efficacité provient de la manipulation directe de la structure interne de la liste.

Échanger des caractères dans une chaîne Java

Les chaînes Java sont immuables ; vous ne pouvez pas modifier directement leurs caractères. Pour « échanger » des caractères, vous devez créer une nouvelle chaîne. Cet exemple utilise des tableaux de caractères pour une manipulation efficace :


public class StringSwap {

    public static String swapChars(String str, int i, int j) {
        if (i < 0 || i >= str.length() || j < 0 || j >= str.length()) {
            throw new IndexOutOfBoundsException("Indices hors limites");
        }
        char[] charArray = str.toCharArray();
        char temp = charArray[i];
        charArray[i] = charArray[j];
        charArray[j] = temp;
        return new String(charArray);
    }

    public static void main(String[] args) {
        String str = "hello";
        String swappedStr = swapChars(str, 1, 3);
        System.out.println(swappedStr); // Sortie : hlleo
    }
}

La méthode convertit la chaîne en un tableau de caractères, effectue l’échange et construit une nouvelle chaîne. Notez que cela crée un nouvel objet chaîne, contrairement à l’échange sur place avec les listes.

Échanger des objets en Java

L’échange d’objets implique la compréhension du mécanisme de passage par référence de Java. L’échange direct des références d’objets au sein d’une méthode n’affecte pas les références originales en dehors de la portée de cette méthode.


public class ObjectSwap {

    public static <T> void swapObjects(T obj1, T obj2) {
        T temp = obj1;
        obj1 = obj2;
        obj2 = temp;
    }

    public static void main(String[] args) {
        Integer a = 10;
        Integer b = 20;
        swapObjects(a, b); // Cela n'échangera PAS les valeurs de a et b.
        System.out.println("a: " + a + ", b: " + b); // Sortie : a: 10, b: 20

        // Pour réellement échanger les objets, vous devez utiliser un conteneur :
        List<Integer> list = new ArrayList<>();
        list.add(a);
        list.add(b);
        ListSwap.swap(list, 0, 1); // Utilisation de la méthode swap de l'exemple ListSwap
        System.out.println("a: " + list.get(0) + ", b: " + list.get(1)); // Sortie : a: 20, b: 10
    }
}

Pour échanger efficacement des objets, utilisez un conteneur comme une liste ou un tableau. L’exemple le montre, en utilisant la méthode swap précédemment définie pour les listes.

En résumé, un échange efficace et correct en Java nécessite une considération attentive de la mutabilité du type de données et l’utilisation de techniques appropriées pour chaque situation.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *