दिलचस्प पोस्ट
मैं एक पंक्ति पर एकाधिक सी ++ स्ट्रिंग कैसे जोड़ूं? कैसे पुनरावर्ती सी में काम करता है यह निर्धारित करने के लिए कि क्या सूची को जावा में सॉर्ट किया गया है? दशमलव स्पीड डबल बनाम कैसे Base64 एन्कोडिंग में node.js करना है? Jquery के सामान्य और स्लिम पैकेज के बीच अंतर क्या हैं? Mediastore से यूआरआइ से फाइल नाम और पथ प्राप्त करें ट्रिगर मंडराना पर चयन बॉक्स पर क्लिक करें 1 डी सरणी से कुशल नीलम 2 डी सरणी निर्माण जीएसी को विधानसभा को स्थापित करने / स्थापित करने का 'सही' तरीका क्या है? 40 जीबी सीएसवी फ़ाइल को आर में बड़ी पढ़ा जा रहा है मैं कैसे जांचूं अगर कोई स्ट्रिंग में कोई विशिष्ट शब्द होता है? सामाजिक नेटवर्क में गतिविधि स्ट्रीम कैसे लागू करें जब jQuery का उपयोग करते समय "$" के साथ चर / उपसर्ग क्यों? चयनित कॉलम के पायथन पंडस अधिकतम मूल्य

जावा में एक मूल स्वैप फ़ंक्शन कैसे लिखें

मैं जावा के लिए नया हूँ निम्न सी कोड के जावा बराबर कैसे लिखेंगे

void Swap(int *p, int *q) { int temp; temp = *p; *p = *q; *q = temp; } 

Solutions Collecting From Web of "जावा में एक मूल स्वैप फ़ंक्शन कैसे लिखें"

यहां एक चाल है:

 public static int getItself(int itself, int dummy) { return itself; } public static void main(String[] args) { int a = 10; int b = 20; a = getItself(b, b = a); } 

दो ints छंटनी

संक्षेप में उत्तर है: आप ऐसा नहीं कर सकते, जावा में कोई संकेत नहीं है

लेकिन यहां कुछ ऐसा ही है जो आप कर सकते हैं:

 public void swap(AtomicInteger a, AtomicInteger b){ // look mom, no tmp variables needed a.set(b.getAndSet(a.get())); } 

आप इसे हर प्रकार के कंटेनर ऑब्जेक्ट्स (जैसे संग्रह और एरेज़ या कस्टम ऑब्जेक्ट्स को एक इंट प्रॉपर्टी के साथ) कर सकते हैं, लेकिन सिर्फ प्राइमिटिव और उनके रैपर के साथ नहीं (क्योंकि वे सभी अपरिवर्तनीय हैं)। परमाणुइंटेगर के साथ यह एक-लाइनर बनाने का एकमात्र तरीका है, मुझे लगता है

बीटीडब्ल्यू: यदि आपका डेटा एक सूची बनता है, तो स्वैप का एक बेहतर तरीका Collections.swap(List, int, int) का उपयोग करना है। Collections.swap(List, int, int) :

 Swaps the elements at the specified positions in the specified list. (If the specified positions are equal, invoking this method leaves the list unchanged.) Parameters: list - The list in which to swap elements. i - the index of one element to be swapped. j - the index of the other element to be swapped. 

एक int [] सरणी छँटाई

जाहिरा तौर पर वास्तविक उद्देश्य में ints की एक सरणी सॉर्ट करने के लिए है। यह Arrays.sort(int[]) साथ एक-लाइनर है:

 int[] arr = {2,3,1,378,19,25}; Arrays.sort(arr); 

आउटपुट की जांच करने के लिए:

 System.out.println(Arrays.toString(arr)); // [1, 2, 3, 19, 25, 378] 

और इनट्स की एक सरणी में दो स्थितियों को स्वैप करने के लिए यहां एक साधारण सहायक फ़ंक्शन है:

 public static void swap(final int[] arr, final int pos1, final int pos2){ final int temp = arr[pos1]; arr[pos1] = arr[pos2]; arr[pos2] = temp; } 

बिटवाइन XOR (^) ऑपरेटर का उपयोग करके सिर्फ एक पंक्ति में जावा में दो चर को स्वैप करने का एक तरीका है।

 class Swap { public static void main (String[] args) { int x = 5, y = 10; x = x ^ y ^ (y = x); System.out.println("New values of x and y are "+ x + ", " + y); } } 

आउटपुट:

एक्स और वाई के नए मान 10, 5 हैं

double और float सहित किसी भी आदिम संख्या वर्ग के लिए इस एक-लाइनर का उपयोग करें:

 a += (b - (b = a)); 

उदाहरण के लिए:

 double a = 1.41; double b = 0; a += (b - (b = a)); System.out.println("a = " + a + ", b = " + b); 

आउटपुट a = 0.0, b = 1.41

जावा में कोई संकेत नहीं हैं हालांकि, प्रत्येक वेरिएबल जो "ऑब्जेक्ट" को ऑब्जेक्ट के संदर्भ में है। आउटपुट पैरामीटर के लिए, आपको ऑब्जेक्ट का उपयोग करना होगा। आपके मामले में, पूर्णांक ऑब्जेक्ट्स

इसलिए आपको उस वस्तु को बनाना होगा जिसमें एक पूर्णांक होता है, और उस पूर्णांक को बदलना होगा। आप पूर्णांक वर्ग का उपयोग नहीं कर सकते, क्योंकि यह अपरिवर्तनीय है (अर्थात इसका मूल्य बदला नहीं जा सकता)।

वैकल्पिक रूप से विधि को एक सरणी या ints की जोड़ी वापस जाने देना है।

स्निपेट -1

 public int[] swap1(int[] values) { if (values == null || values.length != 2) throw new IllegalArgumentException("parameter must be an array of size 2"); int temp = values[0]; values[0]=values[1]; values[1]=temp; return values; } 

स्निपेट -2

 public Point swap2(java.awt.Point p) { if (p == null) throw new NullPointerException(); int temp = px; px = py; py = temp; return p; } 

उपयोग:

 int[] values = swap1(new int[]{x,y}); x = values[0]; y = values[1]; Point p = swap2(new Point(x,y)); x = px; y = py; 

जावा पास-बाय-वैल्यू का उपयोग करता है एक विधि का उपयोग करके दो पुरातन या वस्तुएं स्वैप करना संभव नहीं है।

हालांकि पूर्णांक सरणी में दो तत्वों को स्वैप करना संभव है

आप जावा में संदर्भ का उपयोग नहीं कर सकते हैं, इसलिए एक स्वैप कार्य असंभव है, लेकिन आप स्वैप कार्रवाई के प्रत्येक उपयोग के लिए निम्न कोड स्निपेट का उपयोग कर सकते हैं:

 T t = p p = q q = t 

जहां टी पी और क्यू का प्रकार है

हालाँकि, गुणों को फिर से लिखना द्वारा अस्थिर वस्तुओं को स्वैप करना संभव हो सकता है:

 void swap(Point a, Point b) { int tx = ax, ty = ay; ax = bx; ay = by; bx = tx; by = ty; } 

आपको इसे इनलाइन करना है लेकिन आपको वास्तव में जावा में उस स्वैप की ज़रूरत नहीं है

मामलों में जैसे कि एक तत्व के साथ सरणियों का उपयोग करते हुए एक त्वरित और गंदा समाधान होता है:

 public void swap(int[] a, int[] b) { int temp = a[0]; a[0] = b[0]; b[0] = temp; } 

बेशक आपके कोड को इन सरणियों के साथ भी काम करना है, जो असुविधाजनक है। सरणी चाल अधिक उपयोगी है यदि आप एक आंतरिक वर्ग से एक स्थानीय अंतिम चर को संशोधित करना चाहते हैं:

 public void test() { final int[] a = int[]{ 42 }; new Thread(new Runnable(){ public void run(){ a[0] += 10; }}).start(); while(a[0] == 42) { System.out.println("waiting..."); } System.out.println(a[0]); } 

आपका स्वैप फ़ंक्शन मूलतः स्मृति के दो टुकड़ों में मूल्यों को बदल रहा है। स्मृति के उन टुकड़ों को संदर्भित करने के लिए कुछ भी अब अलग-अलग मूल्य मिलेगा।

जावा में वास्तव में संकेत नहीं हैं, इसलिए यह काम नहीं करेगा। इसके बजाय, ऑब्जेक्ट पर संदर्भ आयोजित किए जाते हैं, और आप केवल ऑब्जेक्ट्स के अंदर सामान बदल सकते हैं। यदि आपको एक ऑब्जेक्ट को दो जगहों पर संदर्भित करने की आवश्यकता है, ताकि आप सिस्टम के चारों ओर एक ही मान पास कर सकें और उनके पास प्रतिक्रिया करने के लिए कुछ चीजें हो, तो रिपॉज़िटरी पैटर्न या निर्भरता इंजेक्शन की तरह कुछ प्रयास करें

हम केवल अनुमान लगा सकते हैं कि सी में आपको इस कोड की आवश्यकता क्यों थी। केवल सलाह जो मैं दे सकता हूं वह ऑब्जेक्ट में परिवर्तनों के बारे में सोचना है, जिसे आप प्राप्त करना चाहते हैं, प्राथमिकताएं अपने internals को खींचने की बजाय प्राथमिक वस्तुओं पर एक विधि जोड़ें, और उस विधि को बजाय कॉल करें अगर यह आपकी सहायता नहीं करता है, तो कॉलिंग कोड पोस्ट करने का प्रयास करें क्योंकि हमारे पास संभवतः एक अच्छा विचार है कि वास्तविक-समस्या जावा-शैली को कैसे हल करें

जावा मूल्य से पास है इसलिए आपके अर्थ के अर्थ में swap संभव नहीं है। लेकिन आप दो ऑब्जेक्ट की सामग्री को स्वैप कर सकते हैं या आप इसे इनलाइन करते हैं

पराक्रमी IntHolder के बारे में क्या? मुझे नाम से ओमजी के साथ कोई पैकेज पसंद है!

 import org.omg.CORBA.IntHolder; IntHolder a = new IntHolder(p); IntHolder b = new IntHolder(q); swap(a, b); p = a.value; q = b.value; void swap(IntHolder a, IntHolder b) { int temp = a.value; a.value = b.value; b.value = temp; } 

आप अस्थायी चर के उपयोग के बिना या बिना चर को स्वैप कर सकते हैं।

यहां एक लेख है जो स्वैप संख्याओं को बिना अस्थायी चर के कई तरीकों को प्रदान करता है:

http://topjavatutorial.com/java/java-programs/swap-two-numbers-without-a-temporary-variable-in-java/

आप आसानी से एक को खुद लिख सकते हैं

दिया हुआ:

 int array[]={1,2}; 

तुम करो:

 int temp=array[0]; array[0]=array[1]; array[1]=temp; 

और आपने कल लिया। कोड की 3 लाइनें

 public class swaptemp { public static void main(String[] args) { String s1="10"; String s2="20"; String temp; System.out.println(s1); System.out.println(s2); temp=Integer.toString(Integer.parseInt(s1)); s1=Integer.toString(Integer.parseInt(s2)); s2=Integer.toString(Integer.parseInt(temp)); System.out.println(s1); System.out.println(s2); } } 

जावा में पॉइंटर का उपयोग करके गमागमन संभव नहीं है। हालांकि , आप ऑब्जेक्ट युक्त ऑब्जेक्ट को दो ऑब्जेक्टों से गुजर करके स्वैपिंग को लागू कर सकते

कोड इस तरह से चला जाता है:

 public class Swap { public static void swap(String [] a){ String temp; temp = a[0]; a[0] = a[1]; a[1] = temp; } public static void main(String [] args){ String [] foo = new String[2]; foo[0] = "str1"; foo[1] = "str2"; swap(foo); System.out.println("First value: "+ foo[0]); System.out.println("Second value: "+ foo[1]); } } 

आउटपुट:

 First value: str2 Second value: str1 
 //here is also another answer: class SwapDemo{ static int a=1, b=2 ; public static void main(String [] args){ Swap swp = new Swap(); swp.swaps(x,y); System.out.println( " a (was 1)now is " + a + " b (was 2) now is " + b); } } class Swap{ void swaps(int c, int d){ SwapDemo f = new SwapDemo(); fa = c; fa = d; } } 
  class Swap2Values{ public static void main(String[] args){ int a = 20, b = 10; //before swaping System.out.print("Before Swapping the values of a and b are: a = "+a+", b = "+b); //swapping a = a + b; b = a - b; a = a - b; //after swapping System.out.print("After Swapping the values of a and b are: a = "+a+", b = "+b); } }