I had 2 integer arrays, one original and one modified w.r.t the original array. Elements can be added or removed from the original to convert it to the modified. My problem is, in the modified, I need to find out which elements are new, which elements are same, and which elements are not there w.r.t to the original array.
Given data:
arr1 = 3,2,1 //Original array
arr2 = 1,4,5 //Modified array by adding and/or removing elements
I need something like:
same = 1
removed = 2,3
added = 4,5
Obviously, I can write several nested for loops and find it out, but this would be too inefficient. I was wondering if there was be a better or efficient way to do it.. I am using Java. This page kind of address a similar problem, but not sure if I can use it to solve my problem.
Any help would be appreciated.
If memory is not a constraint, I'd recommend using Set for these kind of operations. Finding the things you require would be just a matter of calling the appropriate methods on the two Set objects. Of course, this assumes you'd have unique elements in your elements and if not, you are interested in only unique elements when it comes to reporting stuff. For e.g.
public static void testSet() {
final Set<Integer> first = new HashSet<Integer>(Arrays.asList(1, 2, 3));
final Set<Integer> second = new HashSet<Integer>(Arrays.asList(1, 4, 5));
Set<Integer> result = new HashSet<Integer>(first);
result.retainAll(second);
System.out.println("Similar: " + result);
result = new HashSet<Integer>(first);
result.removeAll(second);
System.out.println("Removed: " + result);
result = new HashSet<Integer>(second);
result.removeAll(first);
System.out.println("Newly added: " + result);
}
/*
OUTPUT:
Similar: [1]
Removed: [2, 3]
Newly added: [4, 5]
*/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With