Why does this code change the value of set1 in the last print statement, I was under the impression that in Java arguments were passed by value?
Am I missing something?
import java.util.Set;
import java.util.TreeSet;
public class Testing {
public static void main(String args[]) {
Set<String> set1 = new TreeSet<String>() ;
set1.add("A") ;
set1.add("B") ;
set1.add("C") ;
set1.add("D") ;
set1.add("F") ;
set1.add("G") ;
System.out.println("set1, the tree set: " + set1) ;
Set<String> set2 = new TreeSet<String>() ;
set2.add("B") ;
set2.add("D") ;
set2.add("E") ;
set2.add("F") ;
set2.add("G") ;
System.out.println("set2, the tree set: " + set2) ;
Set set3 = difference(set1, set2);
System.out.println("Difference: " + set1 + " - " + set2
+ " = " + set3) ;
}
public static Set<String> difference(Set<String> x, Set<String> y)
{
x.removeAll(y);
return x;
}}