1.求两个ArrayList的并集,利用set的元素唯一性
public static ArrayList union(ArrayList A,
ArrayList B)
{
Set set = new HashSet();
for (Object tem : A)
set.add(tem);
for (Object tem : B)
set.add(tem);
ArrayList result = new ArrayList<>(set);
return result;
}
2.求两个arraylist的交集
public static ArrayList intersect(ArrayList A,
ArrayList B)
{
Map<Object, Boolean> map = new HashMap<Object, Boolean>();
ArrayList list = new ArrayList<>();
for (Object tem : A)
// if (!map.containsKey(tem))
map.put(tem, Boolean.FALSE);
for (Object tem : B)
if (map.containsKey(tem))
map.put(tem, Boolean.TRUE);
for (java.util.Map.Entry<Object, Boolean> e : map.entrySet())
{
if (e.getValue().equals(Boolean.TRUE))
list.add(e.getKey());
}
return list;
}
3.求两个Arraylist集合差
public static ArrayList minus(ArrayList A,
ArrayList B)
{
ArrayList list = new ArrayList<>();
for (Object tem : A)
// if (!A.contains(tem))
list.add(tem);
for (Object tem : B)
if (list.contains(tem))
list.remove(tem);
else
list.add(tem);
return list;
}
4.写一个关于 Map<Arraylist,Integer>类型的比较器
public class CompareIndex implements Comparator
{
@Override
public int compare(Object o1, Object o2)
{
ArrayList A = (ArrayList) o1;
ArrayList B = (ArrayList) o2;
for (int i = 0; i != A.size(); ++i)
{
if (A.get(i).getClass().toString().contains("String"))
{
String aStr = (String) A.get(i);
String bStr = (String) B.get(i);
if (aStr.compareTo(bStr) == 0)
continue;
else
return aStr.compareTo(bStr);
}
else if (A.get(i).getClass().toString().contains("Integer"))
{
Integer a = (Integer) A.get(i);
Integer b = (Integer) B.get(i);
if (a == b)
continue;
else
return a.compareTo(b);
}
else if (A.get(i).getClass().toString().contains("Double"))
{
Double a = (Double) A.get(i);
Double b = (Double) B.get(i);
if (a == b)
continue;
else
return a.compareTo(b);
}
}
return 0;
}