2016-02-02 23 views
5

का उपयोग कर सेट का सबसेट प्राप्त करें क्या कुछ तुलनित्र द्वारा संग्रह फ़िल्टरिंग के सबसेट प्राप्त करना संभव है और क्या मूल संग्रह और उसके सबसेट पर प्रत्येक अपडेट में सभी परिवर्तन मिलते हैं?तुलनित्र

+0

क्या आप अपने संग्रह में एक प्रकार का 'ट्रिगर' जोड़ना चाहते हैं, जो आपकी सूची में तत्वों को जोड़ता है? –

+1

मुझे नहीं लगता कि नियमित संग्रह के लिए ऐसा करना संभव है, क्योंकि कक्षा को कुछ प्रकार के अवलोकन-इंटरफेस को लागू करना होगा। या तो, या मूल संग्रह में कुछ बदलने पर आपको हर बार सभी तत्वों का परीक्षण करना होगा। –

+1

क्या 'NavigableSet.subSet()' क्या आप चाहते हैं? –

उत्तर

3

NavigableSet.subSet() कॉल जो भी आप चाहते हैं वह कर सकता है। NavigableSet एक क्रमबद्ध सेट है जिसमें अंतर्निहित सेट के "दृश्य" वाले सबसेट बनाने की क्षमता है। ये विचार सेट के निर्माण पर प्रदत्त Comparator या मूल्यों के प्राकृतिक क्रम पर प्रदान किए गए मानों से बंधे हैं। सबसे आम कार्यान्वयन TreeSet है। उदाहरण के लिए, आप यह कर सकते हैं:

NavigableSet<String> set = new TreeSet<>(
     Arrays.asList("b", "e", "a", "d", "c")); 
    System.out.println(set); 

परिणाम [a, b, c, d, e] है आपकी अपेक्षानुसार। अब आप के माध्यम से "डी" "बी" से उदाहरण के लिए, एक सबसेट बना सकते हैं समावेशी:

NavigableSet<String> set2 = set.subSet("b", true, "d", true); 
    System.out.println(set2); 

यहाँ उत्पादन [b, c, d] है। अब अगर आप मूल सेट है कि दोनों के अंदर और सीमा से बाहर हैं करने के लिए कुछ तत्वों को जोड़ने, सबसेट दृश्य परिवर्तन शामिल करने के लिए केवल अंदर क्या जोड़ दिया गया है:

set.add("a1"); 
    set.add("c1"); 
    set.add("e1"); 
    System.out.println(set2); 

उत्पादन [b, c, c1, d] है।

+0

ठीक है, और मैं जो चाहता हूं वह सबसेट को "बी" से "डी" प्रदान करने के साथ नहीं है, लेकिन कुछ तुलनित्र i.e subSet द्वारा जो हर सेकेंड मेरे लिए चुनते हैं। मुझे लगता है कि गैर निरंतर चुनना मुश्किल है इसलिए ऐसा कोई सामान्य contairner नहीं है। लेकिन अगर ट्रीसेट में मैं तुलनित्र हूं जो तत्वों को विभाजित करता है और यहां तक ​​कि। मैं उस तुलनित्र के उपयोग के साथ पहले भाग या दूसरा सबसेट चाहता हूं। – userbb

+0

@userbb ठीक है, मुझे नहीं लगता कि ट्रीसेट का तुलनित्र जो भी आप चाहते हैं वह कर सकता है। तुलनित्र सेट में सभी तत्वों का * कुल आदेश * स्थापित करता है, और यह निर्माण समय पर स्थापित सेट की एक निश्चित संपत्ति है। उदाहरण के लिए, आप इसे एक क्वेरी ऑपरेशन के भीतर सेट नहीं कर सकते हैं। ऐसा लगता है कि आपको भविष्यवाणी के साथ फ़िल्टर की तरह कुछ और चाहिए, लेकिन मुझे लगता है कि आपको अपने उपयोग के मामले को और विस्तार से समझाने की आवश्यकता है। मैं और अन्य अनुमान लगाने का एक उचित हिस्सा कर रहे हैं। –

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