Как написать методы пересечения и объединения для множеств в Java

1

Я новичок в использовании наборов и для одного из упражнений, чтобы узнать, как использовать наборы, мне был предоставлен файл шаблона "SetInt" и завершенный тестовый файл "TestSetInt". Я знаю, что я должен использовать keepAll() и addAll(), но тестовый класс попросил меня написать методы. Кто-нибудь знает, как написать эти два метода? Любая помощь будет оценена по достоинству.

SetInt - это файл, к которому я должен добавить методы и следующий:

public class SetInt 
{
    int[] setArray = new int[52];

public void add(int a)
{
    if (a < setArray.length-2)
    {
        setArray[a] = a;
    }
}
/* add a to the set in the correct position
 *@param a the value to be added
 **/    

public SetInt intersection(SetInt anySet)
{       
    return anySet;
}
/* returns the set of integers common to both
 * the set passed in as an argument and the set the
 * method is called on
 * @param anySet - the set to be intersected
 * @return a set containing the result of the intersection
*/

public SetInt union(SetInt anySet)
{   
    return anySet;
}
/* returns the set of integers which are in either the 
 * set passed in as an argument or the set the method
 * is called on
 * @param anySet - one of the sets in the union
 * @return a set containing the result of the union
*/

}

Вот TestSetInt, файл, предоставленный мне, который я должен запустить, чтобы проверить, работают ли мои методы правильно:

public class TestSetInt
{
    public TestSetInt()
    {
        SetInt test1 = new SetInt();
        SetInt test2 = new SetInt();

//      adding numbers to the 2 sets
        for(int i = 2; i<49;i=i+3)
        {
            test1.add(i);
        }
        System.out.println();

        for(int i = 2; i<49;i=i+4)
        {
            test2.add(i);
        }
        System.out.println();

//      testing intersection
        SetInt interx = new SetInt();
        interx=test2.intersection(test1);

//      testing union       
        SetInt unionx = test1.union(test2);

    }

    public static void main (String args[])
    {
        TestSetInt practice = new TestSetInt(); 
    }
}
  • 0
    Вам разрешено использовать другие структуры данных?
  • 0
    Я могу использовать Set, SortedSet и NavigableSet и реализации HashSet, TreeSet и ConcurrentSkipListSet
Теги:
set
set-intersection
set-union

1 ответ

0
Лучший ответ

это работает :)

Класс SetInt

public class SetInt {
    int[] setArray = new int[52];

    public void add(int a) {
        if (a < setArray.length - 2) {
            setArray[a] = a;
        }
    }

    /*
     * add a to the set in the correct position
     * 
     * @param a the value to be added
     */

    public SetInt intersection(SetInt anySet) {
        SetInt temp = new SetInt();
        for (int i = 0; i < setArray.length; i++) {
            for (int j = 0; j < anySet.setArray.length; j++) {
                if (setArray[i] == anySet.setArray[j]) {
                    temp.setArray[i] = setArray[i];
                }
            }
        }
        return temp;
    }

    /*
     * returns the set of integers common to both the set passed in as an
     * argument and the set the method is called on
     * 
     * @param anySet - the set to be intersected
     * 
     * @return a set containing the result of the intersection
     */

    public SetInt union(SetInt anySet) {
        SetInt temp = new SetInt();
        for (int i = 0; i < setArray.length; i++) {
            for (int j = 0; j < anySet.setArray.length; j++) {
                temp.setArray[i] = setArray[i];
                if (anySet.setArray[j] != 0) {
                    temp.setArray[j] = anySet.setArray[j];
                }
            }
        }
        return temp;
    }
    /*
     * returns the set of integers which are in either the set passed in as an
     * argument or the set the method is called on
     * 
     * @param anySet - one of the sets in the union
     * 
     * @return a set containing the result of the union
     */

}

TestSetInt

public class TestSetInt {
    public TestSetInt() {
        SetInt test1 = new SetInt();
        SetInt test2 = new SetInt();

        // adding numbers to the 2 sets
        for (int i = 2; i < 49; i = i + 3) {
            test1.add(i);
        }
        printSetInt(test1);

        for (int i = 2; i < 49; i = i + 4) {
            test2.add(i);
        }
        printSetInt(test2);

        // testing intersection
        SetInt interx = new SetInt();
        interx = test2.intersection(test1);
        printSetInt(interx);

        // testing union
        SetInt unionx = test1.union(test2);
        printSetInt(unionx);

    }

    public void printSetInt(SetInt set) {
        for (int i : set.setArray) {
            System.out.print(i + ",");
        }
        System.out.println();
    }

    public static void main(String args[]) {
        TestSetInt practice = new TestSetInt();
    }

}
  • 0
    Спасибо вам большое! Я бы дал вам голос, но мой представитель слишком поздно
  • 0
    Я рад, что смог помочь :). Вы можете пометить мой ответ как правильный с кнопкой под upvote :) Я был бы очень благодарен ....

Ещё вопросы

Сообщество Overcoder
Наверх
Меню