Win a copy of Beginning Java 17 Fundamentals: Object-Oriented Programming in Java 17 this week in the Java in General forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Tim Cooke
  • Campbell Ritchie
  • Ron McLeod
  • Liutauras Vilda
  • Jeanne Boyarsky
Sheriffs:
  • Junilu Lacar
  • Rob Spoor
  • Paul Clapham
Saloon Keepers:
  • Tim Holloway
  • Tim Moores
  • Jesse Silverman
  • Stephan van Hulst
  • Carey Brown
Bartenders:
  • Al Hobbs
  • Piet Souris
  • Frits Walraven

Swapping two object in array

 
Ranch Hand
Posts: 45
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
how can i swap 2 object in an array,mind that original object not copy
 
lowercase baba
Posts: 13024
66
Chrome Java Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
If i gave you two bucket of water, how would you swap the contents of them? If you can explain that process in words, you'll know what you need to do in your code.
 
Ranch Hand
Posts: 82
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
You can copy only references of the objects:
Here the objects will not be copied (only their references).
Is this what you are looking for?
 
Ranch Hand
Posts: 105
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Can a method be written to swap two objects?
void swap(Object obj1, Object obj2)
{
???
}

And how about if we want to pass primitives?
void swap(int a, int b)
{
???
}

I don't think there is any way to do this. But how and why Java can be so cruel?
 
author & internet detective
Posts: 40912
840
Eclipse IDE VI Editor Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Prosenjit,
You are correct that you can't write a method to swap two objects or primitives. The references would only swap within the scope of the method; not the original variables.
 
Ranch Hand
Posts: 1296
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

But how and why Java can be so cruel?

 
Greenhorn
Posts: 14
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Use Collection.swap method to do the swapping... That works...
 
Rancher
Posts: 43027
76
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Sunali Anu:
Use Collection.swap method to do the swapping... That works...



The task is to swap two array elements, not two collection elements. You don't mean to suggest converting the array to a List, then to call swap, and then to convert the List back to an array?
[ June 25, 2007: Message edited by: Ulf Dittmer ]
 
zainu Mehmood
Ranch Hand
Posts: 45
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Ya Thanks God You have understnad my problem,because before your replys i think that i a duffer,but thanks to all that you solve my problem by saying that its not possible in java,but it should be,waiting for your reply,and Andris Jekabsons this is not what i want actully this the problem that i have, i want to swap original objects,andd Benerjee thanks that you understand my problem....waiting for your replys,
 
Marshal
Posts: 74754
336
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thank you for the PM.

Andris Jekabsons has already told you what to do. You have to pass a (value of the) reference to the array, and the two indices you want to swap. The method you suggested in the thread transferred from the advanced forum, which is the same as Prosenjit Banerjee suggested, will not swap the original array, as Jeanne Boyarsky has already told you.

You have already had two satisfactory answers on your other thread.

I don't understand what you are saying about moving the internal details. Do you mean which memory location you are going to put the data in? You mean taking the contents of memory location 123456 and putting them in location 234567 and the contents of 234567 into 123456? A concept which has no place in a high-level language. Even pointers in C don't give that sort of control. It is far too error-prone. Also (Bruce Eckel, Thinking in Java, 4/e, Upper Saddle River: Prentice-Hall [2006] page 178ff) the garbage collector can move objects around in memory, so the reference which used to be 123456 can become 345678. In a high-level language you only want to deal with variable names, never with the memory locations.
 
zainu Mehmood
Ranch Hand
Posts: 45
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thanks Cambell,Actully you know what, one of my friend who is from .Net Lovers,he asked me this Question that is it possible but i was unable to answer him,and Now I understand that it is not possible to swap original objects in array in JAVA, you can only swap refrences....Ne ways thanks to all,and sorry if any one of you mind any thing
 
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
reply
    Bookmark Topic Watch Topic
  • New Topic