This week's book giveaways are in the Refactoring and Agile forums.
We're giving away four copies each of Re-engineering Legacy Software and Docker in Action and have the authors on-line!
See this thread and this one for details.
Win a copy of Re-engineering Legacy Software this week in the Refactoring forum
or Docker in Action in the Cloud/Virtualization forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Swapping two object in array

 
zainu Mehmood
Ranch Hand
Posts: 45
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
how can i swap 2 object in an array,mind that original object not copy
 
fred rosenberger
lowercase baba
Bartender
Posts: 12090
29
Chrome Java Linux
  • Mark post as helpful
  • send pies
  • 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.
 
Andris Jekabsons
Ranch Hand
Posts: 82
  • Mark post as helpful
  • send pies
  • 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?
 
Prosenjit Banerjee
Ranch Hand
Posts: 102
  • Mark post as helpful
  • send pies
  • 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?
 
Jeanne Boyarsky
author & internet detective
Marshal
Posts: 34095
337
Eclipse IDE Java VI Editor
  • Mark post as helpful
  • send pies
  • 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.
 
Garrett Rowe
Ranch Hand
Posts: 1296
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
But how and why Java can be so cruel?
 
Sunali Anu
Greenhorn
Posts: 14
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Use Collection.swap method to do the swapping... That works...
 
Ulf Dittmer
Rancher
Pie
Posts: 42967
73
  • Mark post as helpful
  • send pies
  • 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
  • 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,
 
Campbell Ritchie
Sheriff
Posts: 48454
56
  • Mark post as helpful
  • send pies
  • 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
  • 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
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic