मुझे ऐसा कुछ चाहिए, इसलिए मैं कॉमन्स संग्रह में गया और सेटयूनिकलिस्ट का उपयोग किया, लेकिन जब मैंने कुछ प्रदर्शन परीक्षण चलाया, तो मैंने पाया कि अगर मैं सेट का उपयोग करना चाहता हूं और प्राप्त करना चाहता हूं तो यह मामले की तुलना में अनुकूल नहीं लगता है Set.toArray() विधि का उपयोग करके एक ऐरे, SetUniqueTest ने भरने के लिए 20: 1 समय लिया और फिर अन्य कार्यान्वयन की तुलना में 100,000 स्ट्रिंग्स को पार किया, जो एक बड़ा सौदा अंतर है, इसलिए यदि आप प्रदर्शन के बारे में चिंता करते हैं, तो मैं आपको सलाह देता हूं सेट का उपयोग करें और SetUniqueList उपयोग करने के बजाय एक सरणी मिलता है, जब तक आप वास्तव में, SetUniqueList के तर्क की जरूरत है तो आप अन्य समाधान की जाँच करने की आवश्यकता है ...
परीक्षण कोड मुख्य विधि:
public static void (String [] args) {
SetUniqueList pq = SetUniqueList.decorate(new ArrayList());
Set s = new TreeSet();
long t1 = 0L;
long t2 = 0L;
String t;
t1 = System.nanoTime();
for (int i = 0; i < 200000; i++) {
pq.add("a" + Math.random());
}
while (!pq.isEmpty()) {
t = (String) pq.remove(0);
}
t1 = System.nanoTime() - t1;
t2 = System.nanoTime();
for (int i = 0; i < 200000; i++) {
s.add("a" + Math.random());
}
s.clear();
String[] d = (String[]) s.toArray(new String[0]);
s.clear();
for (int i = 0; i < d.length; i++) {
t = d[i];
}
t2 = System.nanoTime() - t2;
System.out.println((double)t1/1000/1000/1000); //seconds
System.out.println((double)t2/1000/1000/1000); //seconds
System.out.println(((double) t1)/t2); //comparing results
}
सादर मोहम्मद स्लीम http://abusleem.net/blog
स्रोत
2009-07-21 20:50:41
सूची को लागू करने की आवश्यकता क्यों है? समूह सूचियों की तरह पुनरावृत्त हैं, इसलिए मुझे लगता है कि प्राप्त करने की विधि किसी अन्य कारण के लिए सूची लागू कर रही है। – Rob
@Rob यह सही है, यह एक बाहरी मांग है, और डेटा संरचना में एक से अधिक सूची का नरक शामिल है। – Yuval
यदि उपयोगकर्ता एक सूची चाहता है, तो यह स्पष्ट है कि लिस्ट इंटरफ़ेस की विधियों की आवश्यकता है जो एसईटी इंटरफ़ेस मौजूद नहीं हैं ... – marcolopes