I am working on a project for class and I'm a bit lost. I have filled out as much of the code as I could, but I think it's wrong.

I need to create and ArrayList and implement methods specified by the teacher using specified parameters.

Here is the code I have so far.

package setapplication; import java.util.*; public class Set { private ArrayList<String>elements; /** * creates an empty set */ public Set() { elements = null; } /** * creates a set using the elements of the ArrayList s. * @param s the ArrayList whose elements are used to create this set. * @throws IllegalArgumentException if s contains duplicity. */ public Set(ArrayList<String> s) { int i; elements = new ArrayList<String>(); for(i=0;i<s.size();i++) { if(elements.contains(s.get(i))) {throw new IllegalArgumentException("Set(ArrayList<String>)duplicity not allowed in sets");} elements.add(s.get(i)); } } /** * creates a set using the elements of the array s. * @param s the array whose elements are used to create this set. * @throws illegalArgumentException if s contains duplicity. */ public Set(String[] s) { int i; elements = new ArrayList<String>(); for(i=0; i<s.length; i++) { if (elements.contains(s[i])) {throw new IllegalArgumentException("Set(String[]):duplicity not allowed in sets");} elements.add(s[i]); } } /** * determines whether a set contains the specified element * @param elt an element * @return true if elt is an element of this set; otherwise, false */ public boolean isElement(String elt) { return elements.contains(elt); } /** * determines the size of this set. * @return the size of this set. */ public int cardinality() { return elements.size(); } /** * computes the intersection of this set and the * specified set. * @param s a set * @return a set representing the intersection of this set * and s. */ public Set intersect(Set s) { int i; ArrayList<String> result = new ArrayList<String>(); for (i=0;i<s.cardinality();i++) { if (this.isElement(s.elements.get(i))) {result.add(s.elements.get(i));} } return new Set(result); } /** * computes the union of this set and the specified set. * @param s a sets * @return a set representing the union of this set * and s. */ public Set union(Set s) { int i; ArrayList<String> result = new ArrayList<String>(); for(i=0;i<s.cardinality();i++) { if (this.isElement(s.elements.get(i))) {result.remove(s.elements.get(i));} } return new Set(result); } /** * computes the difference between this set and the * specified set. * @param s a set * @return a set representing the difference between * this set and s. */ public Set diff(Set s) { int i; ArrayList<String> result = new ArrayList<String>(); for(i=0;i<s.cardinality();i++) { if (this.isElement(s.elements.get(i)) && s.isElement(s.elements.get(i))) {result.remove(s.elements.get(i));} } return new Set(result); } /** * computes the symmetric difference between this set * and the specified set. * @param s a set * @return a set representing the symmetrix difference * between this set and s. */ public Set symDiff(Set s) { int i; ArrayList<String> result = new ArrayList<String>(); for(i=0;i<s.cardinality();i++) { if (this.isElement(s.elements.get(i)) && !s.isElement(s.elements.get(i))) {result.add(s.elements.get(i));} } return new Set(result); } /** * computes the Cartesian product for this set * and the specified set. * @param s a set * @return a set representing the Cartesian product * of this set and s. */ public Set xProduct(Set s) { //implement this method } /** * determines whether a set is empty * @return true if this set is empty; otherwise, false */ public boolean isEmpty() { return elements.isEmpty(); } /** * determines whether this set is equal to the specified * set. * @param s a set * @return true if this set is equal to s; otherwise, false */ public boolean equals(Set s) { return elements.equals(s.elements); } /** * determines whether this set is a subset of the specified set. * @param s a set * @return true if this set is a subset of s; otherwise, false */ public boolean subset(Set s) { return elements.containsAll(s.elements); } /** * determines whether this set is a proper subset of the specified set. * @param s a set * @return true if this set is a proper subset of s; otherwise, false */ public boolean properSubset(Set s) { if(elements.equals(s.elements) && elements.containsAll(s.elements)) {return false;} else{ return true; } } /** * returns a string {x1,x2,...,xn} representing this set, * where x1,x2,...,xn are elements of this set. * @return a string representation of this set formatted * as specified. */ @Override public String toString() { //implement this method }

Any guidance would be appreciated