मेरे पास कक्षा Polygon
है जिस पर मैं दो पुनरावृत्तियों को कार्यान्वित करना चाहता हूं: एक बार सभी तत्वों (वैकल्पिक क्रम में शिखर और किनारों) के माध्यम से चलाने के लिए, और दूसरा इन्हें infinitum (चक्रीय रूप से) चलाने के लिए चलाता है।जावा, लेकिन एकाधिक इटरेटर प्रकार?
प्रत्येक उपयोग दृष्टिकोण के लिए, मेरा अनुमान है कि मैं केवल उपरोक्त में से एक को डिफ़ॉल्ट इटरेटर का उपयोग करने में सक्षम होने वाला हूं जिसका उपयोग Iterable.iterator()
के कार्यान्वयन के माध्यम से किया जा सकता है। क्या ये सही है? या क्या कोई तरीका है जिसके लिए मैं प्रत्येक के लिए उपयोग कर सकता हूं?
public Iterable<String> eachOnce() {
List<String> allResults = new ArrayList<String>();
// fill list
return allResults;
}
public Iterable<String> eachCyclic() {
return new Iterable<String>() {
public Iterator<String> iterator() {
return new Iterator<String>() {
public boolean hasNext() {
return true;
}
public String next() {
// TODO implement
return null;
}
public void remove() {
// do nothing
}
};
}
};
}
इस स्ट्रिंग की एक सूची के साथ सिर्फ एक उदाहरण है, बस अनुकूलन:
अच्छा एक गहाद, मुझे खुशी है कि मैंने पूछा। यह प्रत्येक के लिए उपयोग की आसानी को बनाए रखता है और समस्या को हल करने के लिए encapsulation तोड़ नहीं है। –
+1 यह अनिवार्य रूप से वही है जैसा java.util.Map करता है - आप एंट्रीसेट(), कीसेट() या मान() को कॉल कर सकते हैं, जो सभी विभिन्न Iterables लौटाते हैं। – Avi