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

TreeSetなど、Java が提供するクラスの 1 つを使用することを検討しましたか? 基本的なセット操作のほとんどは、このようなクラスを出発点として使用することで、はるかに簡単に実装できます。

例えば:

  • あなたのisElement()メソッドはSet / TreeSetcontains()で命名されています

  • cardinality()size()

  • intersectを使用して実装できますretainAll()

  • union()を使用して実装できますaddAll()

  • symDiff()removeAll()2 つのセットの和集合から交差要素を削除するために使用して実装できます。

于 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 に答える