Collection Framework

既にどっかに存在してそうだけど、ちょっと探して見つからなかったので作ってみた。
やりたいことは、配列内の重複データのみをエラーとすること。下のmainでやってること。
だれか間違いや効率的な記述があれば指摘してちょうだい。
#復帰値はHashSet,ArrayListになってる。

package util;
import java.util.*;
/**
 * @author chigurihaguri
 * @version 0.1 2005/07/10 chigurihaguri
 */
public class UtilCollection {
	/**
	 * リストの重複データをセットで返す。
	 */
	public static Set duplicateSet(final List list) {
		final Set set = new HashSet();
		final Set duplicateSet = new HashSet();
		final Iterator itr = list.iterator();
		while (itr.hasNext()) {
			Object o = itr.next();
			if (set.add(o) == false) {
				duplicateSet.add(o);
			}
		}
		return duplicateSet;
	}
	/**
	 * 配列の重複データをセットで返す。
	 */
	public static Set duplicateSet(final Object[] src) {
		return duplicateSet(Arrays.asList(src));
	}
	/**
	 * リストの重複データをリストで返す。
	 */
	public static List duplicateList(final List list) {
		final List list2 = new ArrayList();
		list2.addAll(duplicateSet(list));
		return list2;
	}
	/**
	 * 配列の重複データをリストで返す。
	 */
	public static List duplicateList(final Object[] src) {
		final List list = new ArrayList();
		list.addAll(duplicateSet(Arrays.asList(src)));
		return list;
	}
	/**
	 * リストの重複データを配列で返す。
	 */
	public static Object[] duplicateArray(final List list) {
		return duplicateSet(list).toArray();
	}
	/**
	 * 配列の重複データを配列で返す。
	 */
	public static Object[] duplicateArray(final Object[] src) {
		return duplicateSet(src).toArray();
	}
	/**
	 * セルフテスト。
	 */
	public static void main(String[] args) {
		Object[] from = args;
		Set errors = UtilCollection.duplicateSet(from);
		for (int i = 0; i < from.length; i++) {
			if (errors.contains(from[i])) {
				System.out.println("duplicate data(" + (i + 1) + ")->" + from[i]);
			}
		}
	}
}