प्रोग्रामिंग में तत्वों की अदला-बदली एक सामान्य कार्य है, जो सॉर्टिंग और विभिन्न डेटा हेरफेर जैसे एल्गोरिदम के लिए महत्वपूर्ण है। जावा में तत्वों की अदला-बदली का तरीका डेटा प्रकार की परिवर्तनशीलता और संरचना पर काफी निर्भर करता है। यह लेख विभिन्न जावा संदर्भों में तत्वों की अदला-बदली के लिए प्रभावी तकनीकों का पता लगाता है।
विषयवस्तु सारणी
- जावा सूची में तत्वों की अदला-बदली
- जावा स्ट्रिंग में वर्णों की अदला-बदली
- जावा में ऑब्जेक्ट्स की अदला-बदली
जावा सूची में तत्वों की अदला-बदली
सूचियों के लिए, एक सरल तरीका एक अस्थायी चर का उपयोग करना है। यह विधि सूची के भीतर निर्दिष्ट इंडेक्स पर तत्वों को कुशलतापूर्वक स्वैप करती है।
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 out of bounds");
}
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); // Swap elements at index 1 and 3
System.out.println(numbers); // Output: [1, 4, 3, 2, 5]
}
}
यह जेनेरिक विधि विभिन्न प्रकार की सूचियों को संभालती है। इसमें शामिल त्रुटि हैंडलिंग सामान्य इंडेक्स समस्याओं को रोकती है। इसकी दक्षता सूची की आंतरिक संरचना के प्रत्यक्ष हेरफेर से उत्पन्न होती है।
जावा स्ट्रिंग में वर्णों की अदला-बदली
जावा स्ट्रिंग्स अपरिवर्तनीय हैं; आप उनके वर्णों को सीधे संशोधित नहीं कर सकते। वर्णों को “स्वैप” करने के लिए, आपको एक नई स्ट्रिंग बनानी होगी। यह उदाहरण कुशल हेरफेर के लिए वर्ण सरणियों का उपयोग करता है:
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 out of bounds");
}
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); // Output: hlleo
}
}
विधि स्ट्रिंग को एक वर्ण सरणी में बदल देती है, स्वैप करती है, और एक नई स्ट्रिंग बनाती है। ध्यान दें कि यह सूचियों के साथ इन-प्लेस स्वैप के विपरीत, एक नई स्ट्रिंग ऑब्जेक्ट बनाता है।
जावा में ऑब्जेक्ट्स की अदला-बदली
ऑब्जेक्ट्स की अदला-बदली में जावा के पास-बाय-रेफरेंस तंत्र को समझना शामिल है। किसी विधि के भीतर ऑब्जेक्ट संदर्भों को सीधे स्वैप करने से उस विधि के दायरे के बाहर मूल संदर्भ प्रभावित नहीं होते हैं।
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); // This will NOT swap the values of a and b.
System.out.println("a: " + a + ", b: " + b); // Output: a: 10, b: 20
// To actually swap objects, you need to use a container:
List<Integer> list = new ArrayList<>();
list.add(a);
list.add(b);
ListSwap.swap(list, 0, 1); // Using the swap method from the ListSwap example
System.out.println("a: " + list.get(0) + ", b: " + list.get(1)); // Output: a: 20, b: 10
}
}
ऑब्जेक्ट्स को प्रभावी ढंग से स्वैप करने के लिए, सूची या सरणी जैसे कंटेनर का उपयोग करें। उदाहरण इसे प्रदर्शित करता है, सूचियों के लिए पहले से परिभाषित swap
विधि का उपयोग करता है।
संक्षेप में, जावा में कुशल और सही स्वैपिंग के लिए डेटा प्रकार की परिवर्तनशीलता और प्रत्येक स्थिति के लिए उपयुक्त तकनीकों के उपयोग पर सावधानीपूर्वक विचार करने की आवश्यकता है।