How To Do A Deep Copy Of Objects That Contain References
Mar 21, 2014
how to do a deep copy of objects that contain references. I am specifically wanting to make a deep copy of a tree. Logically, each tree node contain references to its children nodes. Here is the basics of my node class
public class BSTNode implements Comparable, Serializable {
private String token;
private int count;
private BSTNode leftChild;
private BSTNode rightChild;
I know I must only be making a shallow copy because when I make a copy of tree1, called tree2, and edit tree1 the edits also appear on tree2. Here is my copy method within my BSTNode class
public BSTNode copy()
{
BSTNode obj = null;
try{
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(bos);
out.writeObject(this);
out.flush();
out.close();
[code]....
When I wish to copy the entire tree, I call that above copy method from my BSTree class using the methods below. (I have 2 methods because this is a homework assignment that requires a copy method that calls a preorder traversal method)
public BSTNode copy()
{
BSTNode copiedTreeRoot = new BSTNode();
return copyTree(copiedTreeRoot,root);
[code]....
And further along when I make changes to tree1, tree 2 also changes. I have no clue what I'm doing wrong. I believe it must be somewhere in how I return the new tree or something.I tried this edit to my copy method, but it made no difference.
public BSTNode copy() {
BSTNode obj = null;
try{
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(bos);
out.writeObject(this);
[code].....
View Replies
ADVERTISEMENT
Nov 21, 2014
I need to get a clone of a fairly deep object tree. All objects are entities and I need to set the primary keys to null. The root object:
public class Grundentscheidung implements Cloneable {
@OneToMany(cascade = CascadeType.ALL)
@JoinColumns({
@JoinColumn(name = "gesamtentscheidung_dstNr"),
@JoinColumn(name = "gesamtentscheidung_id")
[Code] .....
When I call
Grundentscheidung grundentscheidungClone = grundentscheidung.clone();
grundentscheidungClone contains the whole object tree with all dependencies, but the Tatbestand objects have their primary keys. When I use the debugger I see that Tatbestand.clone() is never called.
Is my code faulty? I would like to avoid to write a large method which sets all primary keys on the object tree to null.
View Replies
View Related
Sep 7, 2014
Is there any way to create file refrences so that it look's like there is a file in a directory while it actually is in a different directory?
View Replies
View Related
Jul 27, 2014
An array of references to a specific generic type is not allowed in Java.
e.g.,
ArrSpec<String> arrs[] = new ArrSpec<String>[10];
is not allowed though the type checkng and memory allocation can be done at the compile time itself.
Instead of this, Java allows to use Wildcard type array of references to a generic type.
e.g.,
ArrSpec<?> arrs[] = new ArrSpec<?>[10];
is allowed though the type checking, memory allocation and any type of values to be stored would be decided at the runtime.
View Replies
View Related
May 22, 2015
So I set out to write a program that takes two things from user: Name and Age
Then prints out "Name is Age"
I went through using a "launcher" and having a proper object: [URL]
The class names are Practice and Practice Launcher because I just use a Practice file as a sandbox environment so I understand its not correctly named. I also understand my comments aren't great but I'm just trying to make it work.
Practice.java
public class Practice {
//constructor
public Practice (String a, int b) {
[Code]....
My Practice.userName doesnt reference the variable userName. Why is this?
Also y does this line need Practice twice?
Practice Practice = new Practice(userName, 45);
View Replies
View Related
Apr 19, 2014
I have to implement an object pool that uses phantom references to collect objects abandoned by client threads. This is what I have. I'm really not sure about this implementation.
class ObjectPool<T extends CloneableObject<T>> {
private Queue<T> pool;
private List references = new ArrayList();
private ReferenceQueue rq = new ReferenceQueue();
private CloneableObject<T> prototype
[Code] .....
View Replies
View Related
Jan 19, 2014
So I have an array of objects, each with their own position, I tried switch the references in the array of two objects, then repainted (immediately), but the two objects aren't switching positions on screen...does this even work?
View Replies
View Related
Jan 29, 2014
"What happens if you modify the common object references in these lists, myArrList and urArrList ? We have 2 cases here: In the first one, you reassign the object reference using either of the lists. In this case, the value in the second list will remain unchanged.In the second case, you modify the internals of any of the common list elements - in this case, the change will be reflected in both lists."
I have written the following code, which tests the first case mentioned above, and i get the output as expected: myarrList remains unchanged. How can i test the second case ? My thoughts are ....'second case is untestable the following code, because String is immutable. I need to use StringBuilder or something else to write code for test of second case mentioned'.
ArrayList<String> myarrList = new ArrayList<>();
myarrList.add("one");
myarrList.add("two");
ArrayList<String> urarrList = new ArrayList<>();
urarrList.add("three");
urarrList.add("four");
System.out.println("ArrayLists setup");
[code]....
View Replies
View Related
Dec 27, 2014
I am reading Head First: Java and got to Object References. In the book I got a little bit confused on what happens when two object reference's point at the same object so I wrote a small crude test, the below code. This of course clarified what happens but what I am interested in knowing is in what circumstances would you want to have two separate references for the same object when you could just use the original? Eg. v1
class ObjectValue{
int objVal = 1;
}
class ObjectValueTestDrive{
public static void main(String [] args){
// "Value of v# should be" refers to if it copied the given object values, instead of referencing the same object
ObjectValue v1 = new ObjectValue();
System.out.println("Value of v1 should be 1:" + " "+ v1.objVal);
[code]....
View Replies
View Related
Mar 29, 2015
I have two arrays
private ReservedBook[] reservedBooks;
private LibrarySystem[] libraryBooks;
The library array has two books and I want to copy one of them to the reserved books when you type in the ISBN
public void borrowBook(String ISBN)
{
int i = 0;
if(numberOfBooks < MAX_BOOKS-1)
{
if(libraryBooks[i].getBookISBN().equals(ISBN))
{
for(i=0;i<MAX_BOOKS-1;i++)
reservedBooks[i] = libraryBooks[i];
}
else System.out.println("There is no such book");
}
else System.out.println("You have reached the maximum number of allowed books");
}
It shows me error: incompatible types - LibrarySystem cannot be converted into ReservedBook. How can I fix it?
View Replies
View Related
Aug 6, 2014
I am trying to copy all odd value of an array in one array and all even value in another array
this what i have try to so far
private static void arrayOperation(int[] a) {
// TODO Auto-generated method stub
int n=a.length;
int odd_value[] = {};
[Code].....
But i am getting error
View Replies
View Related
Aug 1, 2014
I'm trying to copy a exe file from one location to another. It seems simple, but I have failed to find anything about it besides coping the contents in txt files, but that does nothing for executable.
View Replies
View Related
Jun 8, 2014
I read and then copy files into a subfolder, and I need to rename the file names by adding the timestamp to the file name, for example like: "filename1_25.06.14_15:00:00.txt". How can I do that? Here is what I have:
public class Table_data {
static String files = null;
static List<O> l= new ArrayList<O>();
[Code]....
is it right what i tryed, because i get nothing with timestamp in file after running this.
View Replies
View Related
Jun 14, 2014
Disaster has struck some of ACME's redundant data centers. The administrators have managed to restore backups, but some data sets are still missing from some data centers. Fortunately, every data set can be found at least once in one or more of the data centers. However, before ACME can resume normal operations, it needs to ensure that each data center has a copy of every data set.Your goal is to ACME resume normal operations by writing a program to synchronize data sets between data centers using as few copies as possible.
The first line of input will contain an integer between 0 and 999999 inclusive, representing the number of data centers.Following that will be one line of input for each data center. Each line will contain an integer from 0 to 299 representing the number of data sets at that data center, followed by a space and space-separated list of data set ids currently present at that data center. Data set ids are each an integer between 1 and 999999, inclusive. Each line will be at most 999 characters long.Data set ids are not necessarily consecutive. The list of data sets will not be in any particular order.
Output:The program must output an optimal data set copy strategy to ensure that every data center has a copy of every data set. Output one line for every copy instruction.A copy instruction is of the form <data-set-id> <from> <to>, where <data-set-id> is the data set id, <from> is the index of the data center the data set will be copied from (1 = the first data center), and <to> is the index of the data center to copy the data set to.When there are no more copy instructions, the program must output the word "done" on a line by itself. There is often more than one correct output with minimal number of operations for a given input, and any output that satisfies the requirements is valid.
Example 1:
----------
Input:
4
3 1 3 4
3 1 2 3
2 1 3
3 1 4 2
One Possible Correct Output:
2 2 1
4 1 2
2 2 3
4 4 3
3 1 4
done
Example 2:
----------
Input:
2
2 1 2
2 2 1
Output:
done
View Replies
View Related
Mar 9, 2014
I'm trying to copy and paste(highlight) my code into the forums thread, but am still not sure on how to do it. I've looked in this link: Announcements - What's Wrong With My Code?But still, I am still not sure on where to put the highlight info. Also, I'm using the latest version of Eclipse.
View Replies
View Related
Apr 16, 2014
If I have a ComboBox and I want to copy the selected value to textfield. How can I do it?
View Replies
View Related
Dec 4, 2014
if there was a way to copy specific array info into a temp array with more concise code?
This is the code I have for instance:
tempList[0] = myCube.orange[2];
tempList[1] = myCube.orange[5];
tempList[2] = myCube.orange[8];
tempList[3] = myCube.blue[6];
tempList[4] = myCube.blue[7];
tempList[5] = myCube.blue[8];
But isn't there any way I could just condense it to be like:
tempList[0,1,2] = myCube.orange[2,5,8];
It would save me from 72 lines of code down to 24 if I could rock it all on one line.
View Replies
View Related
Apr 28, 2015
I want to know know to copy a rectangle on my jframe and paste it in another location on the same jframe.
View Replies
View Related
May 29, 2014
package com.practice;
public class Car {
private String name; //name of the car
private String modelName; //Name of the model
private int year; //The year car was made in
private int speed=0;
[Code] ...
It wont let me copy it into a array is there any solution to this.
View Replies
View Related
Dec 8, 2014
How to copy the target of a link? I am using Apache's FileUtils class. I have tried the following and it only copies the link, not the target:
import org.apache.commons.io.FileUtils;
import java.io.File;
public class Copier {
public static void main(String[] args) {
File sourceFile = new File("C:/Demo/sourceDir/a_link.lnk");
File destinationDirectory = new File("C:/Demo/destinationDirectory");
FileUtils.copyFileToDirectory(sourceFile, destinationDirectory);
}
}
View Replies
View Related
Apr 27, 2015
I have a text file which contains to integer values I need to retrieve for each item (total of 56 items in the file). One is an item number, the other the weight ("Item: " + number + "Weight: " + weight). I am trying to build an array list that will add each set of data to it. I know that when I add the item array to the arraylist it is storing the array variable and not its contents, so is there a way to easily copy that data array to the array list?
ArrayList newInventory = new ArrayList();
int[] item = new int[2];
while(sc.hasNext()) {
String itemVal = br.readLine();
if(sc.hasNextInt()) {
item.add(sc.nextInt());
}
}
View Replies
View Related
Jul 12, 2014
I want to know which Java class and method that can be called in order to copy the content of a flash drive(usb) without opening the flash drive. If possible also to know the prodecure on how to do it. I've tried some overloaded methods of copy() from the java.nio package.
View Replies
View Related
Jun 4, 2014
I want my function to return an array, with the array holding just the values of data that appear in good.
This is what should be returned:
{3, 5, 3, 2, 3, 3}
What is currently being returned:
{0, 3, 5, 3}
I didn't want to miss any numbers, so I decided to iterate through j for the "good" array, and then just i for the one that I was looking for matching numbers. Perhaps part of the problem is that if the condition is met, it goes to the next iteration of the loop. I'm not sure.
public class Arrays2 {
public static void main(String args[]){
int [] data = {8, 3, 5, 3, 7, 2, 8, 3, 3 };
int [] good = {5, 2, 3, 2};
int [] result = f2(data, good);
for (int i = 0; i < result.length; i++){
[Code] ....
View Replies
View Related
Dec 17, 2014
I'm working on a simple site for my friend, and he asked me to link to his other site. I need to have the link to a specific search. For example, if I search for "Heathrow," I need to be able to link a button on the other site so that it can be clicked and directed to the search results on this page. Problem is that this is apparently all Java (which I know nothing of) and how to just copy a link to the results page.
View Replies
View Related
Sep 29, 2014
Here is the exact instruction for the assignment...
Make 2 classes WrapperShallow and WrapperDeep.
Each class is simply a wrapper class to hold a private array variable. int [] a;
The default constructor for each class should initialize “a”.
Each class should have a toString() and equals().
Each class should have a setArray method that allows you to set the “a” variable.
WrapperShallow should have an invalid copy constructor.
[Code] ,....
Think about why shallow is wrong and deep is correct! What happens to the old “a” in the WrapperDeep copy
constructor? (think garbage collection)
Example Output:
--------------------Configuration: <Default>--------------------
**** TESTING SHALLOW OBJECTS ****
inital shallow object contains
7 17 77
copy shallow object contains
7 17 77
inital shallow object changed to
13 14 15
copy shallow object not changed contains
13 14 15
[Code] .....
So far I've only finished part of the WrapperDeep class. I can't get my equals method to work properly, I keep getting the error:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - missing return statement
at WrapperDeep.equals(WrapperDeep.java:27)
at WrapperTest.main(WrapperTest.java:18)
Java Result: 1
My class looks like this:
public class WrapperDeep {
private int a[] = new int[3];
public WrapperDeep(int x, int y, int z){ //constructor initializes 3 integers in array
a[0] = x;
a[1] = y;
a[2] = z;
[Code] ....
View Replies
View Related
Jul 27, 2014
I am currently working on a project where I need to return data from a database over RMI to a client who requests it. Some of the fields in the Data Object can not be seen by the client so I need to create another object to send over the network instead. The method I use is this...
public static SerializableObject createSerializableObjectFromDataObject(DataObject dataObject){
SerializableObject serializableObject = new SerializableObject();
serializableObject.setField(dataObject.getField());
serializableObject.setAnotherField(dataObject.getAnotherField());
return serializableObject;
}
Is there a better way of doing this? I am creating many subclasses DataObject which all require this static method to be implemented and I can't push it into the superclass because each one needs custom behaviour.
View Replies
View Related