2013-07-24 8 views
6

मुझे उम्मीद है कि निम्न कोड मुझे एक सबसेट और एक पूरक सेट देगा।कैसे Set.contains() तय करता है कि यह सबसेट है या नहीं?

लेकिन वास्तव में, परिणाम दिखाता है कि "त्रुटि: यह सबसेट नहीं है!"

क्या परिणाम प्राप्त करने के लिए यह है। Anxt() प्राप्त करें और मेरे कोड को कैसे संशोधित करें? धन्यवाद!

set.contains(s) 

कि आप क्या सोचते हैं यह करता है नहीं करता है, यह एक तर्क के रूप में एक और Set नहीं ले करता है, तो उसके सदस्यों में शामिल हैं को देखने के लिए:

package Chapter8; 

import java.util.HashSet; 
import java.util.Iterator; 
import java.util.Set; 

public class Three { 
    int n; 
    Set<Integer> set = new HashSet<Integer>(); 

    public static void main(String args[]) { 
     Three three = new Three(10); 
     three.display(three.set); 
     Set<Integer> test = new HashSet<Integer>(); 
     Iterator<Integer> it = three.set.iterator(); 
     while(it.hasNext()) { 
      test.add(it.next()); 
      three.display(test); 
      three.display(three.complementarySet(test)); 
     } 

    } 

    boolean contains(Set<Integer> s) { 
     if (this.set.contains(s)) 
      return true; 
     else 
      return false; 
    } 

    Set<Integer> complementarySet(Set<Integer> s) { 
     if(this.set.contains(s)){ 
      Set<Integer> result = this.set; 
      result.removeAll(s); 
      return result; 
     } 
     else { 
      System.out.println("Error: This is not a subset!"); 
      return null; 
     } 
    } 

    Three() { 
     this.n = 3; 
     this.randomSet(); 
    } 

    Three(int n) { 
     this.n = n; 
     this.randomSet(); 
    } 

    void randomSet() { 
     while(set.size() < n) { 
      set.add((int)(Math.random()*10)); 
     } 
    } 

    void display(Set<Integer> s) { 
     System.out.println("The set is " + s.toString()); 
    } 
} 
+0

सेट सेट करने से पहले आपको सेट एपीआई जानना होगा। कृपया मेरे ट्यूटोरियल [हैशसेट के आंतरिक जीवन] को कवर करें (http://volodial.blogspot.com/2013/07/internal-life-of-hashset-in-java.html) –

+0

@ वोलोडिमिर लेवेयत्स्की आपका लिंक टूटा हुआ है, लेख है अभी भी कहीं और उपलब्ध है? – Noumenon

उत्तर

2

आपकी समस्या इस हिस्से में है पहला set। ऐसा लगता है कि तर्क पारित होने पर सेट में है या नहीं।

आपको "निहित" सेट पर फिर से शुरू करने की आवश्यकता है और निहित सेट में प्रत्येक तत्व के लिए set.contains(element) का उपयोग करें।

20

यदि आप संग्रह (सेट, इस मामले में) 'सेट' का सबसेट है, तो शायद आप set.containsAll(Collection <?> C) का उपयोग करना चाहते हैं। दस्तावेज़ों से: http://docs.oracle.com/javase/7/docs/api/java/util/Set.html#containsAll(java.util.Collection)

boolean containsAll(Collection c)

Returns true if this set contains all of the elements of the specified collection. If the specified collection is also a set, this method returns true if it is a subset of this set.

संबंधित मुद्दे

 संबंधित मुद्दे