containsandのパラメータをremove制限するEことはできません。なぜなら、それらに等しいオブジェクトを与えることができるはずだからです。これは非常に便利です。より正確には、の API は次のようにHashSet.remove述べています。
  ... より正式には、(o==null ? e==null : o.equals(e)) のような要素 e を削除します (このセットにそのような要素が含まれている場合)。
Object.equalsこれはObject、異なるタイプ間の同等性を有効にするのにも非常に役立ちます。
containsしたがって、 andのより一般的な機能を有効にするにはremove(オブジェクト ID のみではなく等価クラスで)、それらをObjectパラメーターとして使用する必要があります。
例:
    HashSet<ArrayList<String>> set = new HashSet<ArrayList<String>>();
    ArrayList<String> list = new ArrayList<String>();
    list.add("foo");
    LinkedList<String> equalList = new LinkedList<String>();
    equalList.add("foo");
    set.add(list);
    System.out.println(list.equals(equalList)); // prints: true
    System.out.println(set.contains(equalList)); // prints: true
    System.out.println(set); // prints: [[foo]]
    set.remove(equalList);
    System.out.println(set); // prints: [[]]