I have an ArrayList of HashSets named "set" and to operate on the individual HashSets I am copying the Set's value to a temporary HashSet "temp" but when I make changes to temp by the command "temp.retainAll(set.get(i))" it changes the original Set... please help me. the code is given below:
public class newques {
public boolean ValidCorner(int matrix[][])
{
// Your code goes here
boolean result = false;
int r = matrix.length;
int c = matrix[0].length;
ArrayList<HashSet<Integer>> set = new ArrayList<>();
for (int i = 0; i < r; i++) {
HashSet<Integer> temp = new HashSet<>();
for (int j = 0; j < c; j++) {
if (matrix[i][j]==1) {
temp.add(j);
}
}
set.add(temp);
}
System.out.println(set);
System.out.println("Size of set is: " + set.size());
for (int i = 0; i < set.size(); i++) {
for (int j = i+1; j < set.size(); j++) {
HashSet<Integer> temp = set.get(i);
System.out.println(temp);
System.out.println(set.get(j));
temp.retainAll(set.get(j));
System.out.println(set.get(i));
System.out.println("Temp set is: " + temp);
System.out.println();
if (temp.size() % 2 == 0 && temp.size() != 0) {
result = true;
break;
}
}
}
return result;
}
}