2014-04-26 3 views
1

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

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 – MOZAKATAK

ответ

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

Большое вам спасибо! Я бы дал вам взнос, но мой представитель слишком поздно – MOZAKATAK

+0

Я рад, что смог помочь :). Вы можете пометить мой ответ как правильно с кнопкой под upvote :) я был бы действительно благодарен .... –

Смежные вопросы