I’ve two lists A and B. I’d like to find out indexes of elements in A that match elements of listB. Something like this:
ArrayList listA = new ArrayList();
listA.add(1);listA.add(2);listA.add(3);listA.add(4);
ArrayList listB = new ArrayList();
listB.add(2);listB.add(4);
ArrayList listC = new ArrayList();
for(int i=0; i<listB.size();i++) {
int element = listB.get(i);
for(int j=0; j<listA.size(); j++) {
if(listA.get(j) == element) listC.add(j);
}
}
I guess that’s one ugly way to doing it. What is the best way to finding all the indexes of A that match all elements in B? I believe there exists a method called containsAll in collections api – don’t think it returns matching indexes.
If you had to use an
ArrayList, you could create aHashSetfrom theArrayList. This would make the call tocontainsO(1). It would take O(n) to create theHastSet. If you could start with aHashSet, that would be best.