2

需要完成这个才能使用 UseSet 类。不确定我所实施的是否 100% 正确。

但是我需要 Union 和 SysDiff 的帮助。

public class Set
{
   private ArrayList<Integer> elements;

   public Set()
   {
       elements = null;
   }

   public Set(ArrayList<Integer> s)
   {
       int i;
       elements = new ArrayList<Integer>();
       for(i=0; i<s.size(); i++)
          elements.add(s.get(i));
   }

   public Set(int[] s)
   {
       int i;
       elements = new ArrayList<Integer>();
       for(i=0; i<s.length; i++)
          elements.add(s[i]);
   }

   public String toString()
   {
       //implement this method
   }

   public boolean isElement(int elt)
   {
       int i
    for (i=0; i < elements.size(); i++)
    {
        if (elements.get(i) == elt)
        return true;
    }
    return false

   }

   public int cardinality()
   {
       return elements.size();
   }

   public Set intersect(Set s)
   {
    Array list <interger> iset = new Array(ist<interger>();
    int i;
    for (i=0; i<elements.size(); i++)
    {
        if (s2.isElement (elements.get(i)))
        iSet.add(elements.get(i)));
   }
    return new set(iset)
}

   public Set union(Set s)
   {
       //implement this method
   }

   public Set symDiff(Set s)
   {
       //implement this method
   }
4

3 回答 3

9

您是否考虑过使用 Java 提供的类之一,例如TreeSet?使用这样的类作为起点,可以更容易地实现大多数基本的集合操作。

例如:

  • 您的isElement()方法contains()Set / TreeSet中命名

  • cardinality()size()

  • intersect可以使用实现retainAll()

  • union()可以使用实现addAll()

  • symDiff()可以使用removeAll()从两个集合的并集中删除交集元素来实现。

于 2011-04-10T21:35:46.187 回答
1

请参阅有关使用 java Set 接口执行数学集合操作的 Oracle 文档:

http://download.oracle.com/javase/tutorial/collections/interfaces/set.html

您可以轻松地进行联合和相交。

于 2011-04-10T21:37:34.513 回答
0

Java有它的基本实现。如需更多功能,请尝试 Apache Commons 库:

Commons-Collections 试图通过提供新的接口、实现和实用程序来构建 JDK 类。有很多功能,包括...

http://commons.apache.org/collections/

CollectionUtils 类对您的任务特别有用(例如,addAll:

http://commons.apache.org/collections/api-release/org/apache/commons/collections/CollectionUtils.html#addAll(java.util.Collection,%20java.util.Enumeration )。

您可以在此处查看实现并提出想法:

http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/java/org/apache/commons/collections/CollectionUtils.java?view=markup

于 2011-04-10T21:48:06.110 回答