Test Script for Class CellArrayListIterator
Step through and execute this script cell-by-cell to verify the iterator for a CellArrayList.
Written by Bobby Nedelkovski MathWorks Australia Copyright 2009-2010, The MathWorks, Inc.
Contents
- Clean Up
- Create 2x2 Array of Instances of CellArrayList
- Append Arbitrary Elements to End of All Lists
- Append Arbitrary Elements to End of Particular Groups of Lists
- Display 'myList'
- Create Iterator for Array of CellArrayLists
- Traverse First 3 Elements in All Lists
- Reset Iterator for Each List
- Traverse All Elements of a Particular List
- Traverse All Elements of All Lists
- Check End Of Traversal of All Lists
- Try Access Next Element
Clean Up
clear classes
clc
Warning: Objects of 'onCleanup' class exist. Cannot clear this class or any of its super-classes.
Create 2x2 Array of Instances of CellArrayList
myList(2,2) = CellArrayList();
Append Arbitrary Elements to End of All Lists
myList.add(5); % a single integer
Append Arbitrary Elements to End of Particular Groups of Lists
myList(1,1).add(rand(2)); % a 2x2 matrix myList(1,:).add({50,55}); % 2 integers as 2 unique elements myList(2,:).add({rand(3),5:7}); % a 3x3 matrix and a 1x3 array myList(:,1).add(myList); % reference to self! myList(:,2).add({10,11;12,13}); % a 2x2 cell array myList(2,2).add({150,160,170}); % 3 integers as 3 unique elements
Display 'myList'
Alternatively, you can execute "myList.display()" which produces the same output.
myList
***List #1*** list[1]{1} = 5 list[1]{2} = 0.9961 0.4427 0.0782 0.1067 list[1]{3} = 50 list[1]{4} = 55 list[1]{5} = 2x2 CellArrayList handle with no properties. ***List #2*** list[2]{1} = 5 list[2]{2} = 0.9619 0.8173 0.3998 0.0046 0.8687 0.2599 0.7749 0.0844 0.8001 list[2]{3} = 5 6 7 list[2]{4} = 2x2 CellArrayList handle with no properties. ***List #3*** list[3]{1} = 5 list[3]{2} = 50 list[3]{3} = 55 list[3]{4}{1,1} = 10 list[3]{4}{2,1} = 12 list[3]{4}{1,2} = 11 list[3]{4}{2,2} = 13 ***List #4*** list[4]{1} = 5 list[4]{2} = 0.9619 0.8173 0.3998 0.0046 0.8687 0.2599 0.7749 0.0844 0.8001 list[4]{3} = 5 6 7 list[4]{4}{1,1} = 10 list[4]{4}{2,1} = 12 list[4]{4}{1,2} = 11 list[4]{4}{2,2} = 13 list[4]{5} = 150 list[4]{6} = 160 list[4]{7} = 170
Create Iterator for Array of CellArrayLists
myIter = myList.createIterator();
Traverse First 3 Elements in All Lists
a = myIter.next() % a = {5,5; 5,5} b = myIter.next() % b = {2x2 matrix,50; 3x3 matrix,3x3 matrix} c = myIter.next() % c = {50,55; 1x3 array,1x3 array}
a = [5] [5] [5] [5] b = [2x2 double] [ 50] [3x3 double] [3x3 double] c = [ 50] [ 55] [1x3 double] [1x3 double]
Reset Iterator for Each List
myIter.reset();
Traverse All Elements of a Particular List
particularIter = myIter(1,2); while particularIter.hasNext() elt = particularIter.next() % ...operations to perform on elt go in here... end % Reset iterator. particularIter.reset();
elt = 5 elt = 50 elt = 55 elt = [10] [11] [12] [13]
Traverse All Elements of All Lists
hasNext = myIter.hasNext(); while any(hasNext(:)) elts = myIter.next() % ...operations to perform on elts go in here... hasNext = myIter.hasNext(); end % Reset iterators. myIter.reset();
elts = [5] [5] [5] [5] elts = [2x2 double] [ 50] [3x3 double] [3x3 double] elts = [ 50] [ 55] [1x3 double] [1x3 double] elts = [ 55] {2x2 cell} [2x2 CellArrayList] {2x2 cell} elts = [2x2 CellArrayList] [] [] [150] elts = [] [] [] [160] elts = [] [] [] [170]
Alternative implementation of the same operation...
n = numel(myIter); while any(reshape(myIter.hasNext(),n,1)) elts = myIter.next() % ...operations to perform on elts go in here... end
elts = [5] [5] [5] [5] elts = [2x2 double] [ 50] [3x3 double] [3x3 double] elts = [ 50] [ 55] [1x3 double] [1x3 double] elts = [ 55] {2x2 cell} [2x2 CellArrayList] {2x2 cell} elts = [2x2 CellArrayList] [] [] [150] elts = [] [] [] [160] elts = [] [] [] [170]
Check End Of Traversal of All Lists
next = [0,0; 0,0] (matrix of falses)
next = myIter.hasNext()
next = 0 0 0 0
Try Access Next Element
This yields cell array of empty sets [ ] given we have already traversed all elements of each corresponding list.
elts = myIter.next()
elts = [] [] [] []