import java.util.*; /** * This class was implemented to preserve * MySQL functionality. MySQL does not support * the use of subqueries in set operations, so * it was necessary to write a class to do these. */ public class ListOps { public static ArrayList intersect(ArrayList a, ArrayList b) { Hashtable tmp = new Hashtable(); for (int i = 0; i < a.size(); i++) { tmp.put(a.get(i), new Integer(1)); } for (int i = 0; i < b.size(); i++) { String key = (String) b.get(i); Integer old = (Integer) tmp.get(key); if (old != null) tmp.put(key, new Integer(old.intValue() + 1)); else tmp.put(key, new Integer(1)); } ArrayList smaller, larger; if (a.size() > b.size()) { smaller = b; larger = a; } else { smaller = a; larger = b; } ArrayList ret = new ArrayList(); for (int i = 0; i < smaller.size(); i++) { String key = (String) smaller.get(i); Integer val = (Integer) tmp.get(key); if (val.intValue() > 1) ret.add(key); } return ret; } }