ListQueue<E>.from 构造函数
- Iterable elements
创建一个包含所有 elements
的 ListQueue
。
元素按照 elements.iterator
顺序添加到队列中,就如同使用 addLast 方法一样。
所有 elements
应该是 E
的实例。该可迭代 elements
本身可以具有任何元素类型,因此这个构造函数可以用于向下转型 Queue
,例如
Queue<SuperType> superQueue = ...;
Queue<SubType> subQueue =
ListQueue<SubType>.from(superQueue.whereType<SubType>());
示例
final numbers = <num>[10, 20, 30];
final queue = ListQueue<int>.from(numbers);
print(queue); // {10, 20, 30}
实现
factory ListQueue.from(Iterable<dynamic> elements) {
if (elements is List<dynamic>) {
int length = elements.length;
ListQueue<E> queue = ListQueue<E>(length + 1);
assert(queue._table.length > length);
for (int i = 0; i < length; i++) {
queue._table[i] = elements[i] as E;
}
queue._tail = length;
return queue;
} else {
int capacity = _INITIAL_CAPACITY;
if (elements is EfficientLengthIterable) {
capacity = elements.length;
}
ListQueue<E> result = ListQueue<E>(capacity);
for (final element in elements) {
result.addLast(element as E);
}
return result;
}
}