2012-11-16 19 views
5

क्या डार्ट में रिवर्स ऑर्डर में सूची में ऑब्जेक्ट्स के माध्यम से पुनरावृत्ति करने का कोई प्रभावी तरीका है? मैं सूचकांक का उपयोग कर सकता हूं, लेकिन क्या यह एक प्रदर्शन हिट का कारण बन जाएगा (यानी List<E> आंतरिक रूप से लिंक की गई सूची का उपयोग कर बनाया गया है)?सूची के लिए रिवर्स इटरेटर?

प्रसंग: मैं वापस सामने से वस्तुओं ड्राइंग हूँ, लेकिन वापस करने के लिए

अली

उत्तर

4

मुद्दा #2804तय कर दिया गया है जब तक सामने से उन्हें संसाधित करने की जरूरत है, तो आप में सूची पुनरावृति करने के लिए है सूचकांक का उपयोग कर रिवर्स ऑर्डर। डार्ट में

सूचियाँ रैंडम एक्सेस

+0

धन्यवाद। मैं अब –

+2

डार्ट्स के सूचकांक के साथ रहूंगा, डार्ट में अब एक समाधान है। प्रश्न का मेरा जवाब देखें। उम्मीद है की वो मदद करदे! –

0

यह अच्छा होगा यदि वहाँ एक कुशल पीछे की ओर यात्रा कर रहे थे होगा के लिए हैं: अपने प्रदर्शन चिंता का विषय के लिए, यह क्योंकि Lasse R.H. Nielsen once said अच्छा होना चाहिए।

इस बीच, आप क्या कर सकते हैं पिछड़ा लिंक के साथ एक सूची बना सकते हैं।

उदा

class BackwardsLinked { 
    // properties, methods etc. 
    // as an example, just an int 
    int value; 

    BackwardsLinked(this.value); 

    BackwardsLinked previousItem; 

    String toString() => "[$value]"; 
} 

void main() { 
    // setting up the list 
    var list = new List<BackwardsLinked>(); 
    var anchor = new BackwardsLinked(0); 
    anchor.previousItem = null; 

    list.add(anchor); 

    for (int i = 1; i < 10; i++) { 
     list.add(new BackwardsLinked(i * 3)); 
     list[i].previousItem = list[i - 1]; 
    } 
    BackwardsLinked terminal = list[list.length - 1]; 

    // Iteration 
    print("Forwards, as usual:"); 
    for (BackwardsLinked link in list) { 
     // Do whatever with object 
     print(link); 
    } 

    print("Backwards:"); 
    { 
     BackwardsLinked link = terminal; 
     print(terminal); 
     while (link.previousItem != null) { 
      link = link.previousItem; 
      // Do whatever with object 
      print(link); 
     } 
    } 
} 
10

अब आप डार्ट में एक सूची के पुनरावृत्ति को उलट सकते हैं। सूची पर reversed गेटर का उपयोग करें।

var fruits = ['apples', 'oranges', 'pears']; 
Iterable inReverse = fruits.reversed; 
var fruitsInReverse = inReverse.toList(); 
print(fruitsInReverse); // [pears, oranges, apples] 

आप को यह छोटा कर सकते हैं:

var fruits = ['apples', 'oranges', 'pears']; 
print(fruits.reversed.toList()); 

API docs देखें।

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