У меня есть способ добавить коллекцию общих элементов в мой массив, но не знаю, как это реализовать. Я обозначил строку кода, с которой у меня возникли проблемы с COLLECTION
. Я не знаю, что писать вместо этого. Мой массив представляет собой круглый кольцевой массив.Как добавить коллекцию элементов в массив?
import java.util.Collection;
import java.util.Iterator;
public class CircularArrayRing<E> implements Ring<E> {
public E[] elements; //array of E
private int capacity;
private int writePos = 0;
private int available = 0;
public CircularArrayRing(int size) { //circular array constructor
capacity = size;
}
public boolean add(E e) {
if(available < capacity){
if(writePos >= capacity){
writePos = 0;
}
elements[writePos] = e; //add element e
writePos++;
available--;
return true;
}
return false;
}
public boolean addAll(Collection<? extends E> c) {
if(available < capacity){
if(writePos >= capacity){
writePos = 0;
}
elements[writePos] = COLLECTION; //how do add a collection of elements?
writePos++;
available++;
return true;
}
return false;
}
}
Итерируйте по коллекции, увеличивайте позицию записи для каждого элемента и задайте элемент в этом положении. Это в основном то же самое, что и для (E e: c) {add (e); } '- и я бы, вероятно, использовал его таким образом. Просто продолжайте отслеживать, возвращают ли значения и действуют, если вы получите 'false', или еще лучше проверьте' available> = c.size() 'перед выполнением цикла. – Thomas
Боковое примечание: Я думаю, 'available ++;' не то, что вы хотите в 'addAll()'. – Thomas
Дополнительная примечание стороны: что означает 'доступная <емкость'? Я предполагаю, что вы скорее хотите инициализировать 'available' значением' capacity', а затем проверить 'available> 0'. – Thomas