33import java .util .Arrays ;
44import java .util .Iterator ;
55import java .util .NoSuchElementException ;
6+ import java .util .Objects ;
67import java .util .stream .Stream ;
78
89/**
2526 *
2627 * @param <T> тип элементов, хранимых в коллекции
2728 */
28- public class CustomCollection <T > implements Iterable <T > {
29+ public class CustomCollection <T > implements CollectionInterface <T > {
2930 /** Коэффициент увеличения емкости при расширении массива. */
3031 private static final float GROWTH_FACTOR = 1.5f ;
3132
@@ -57,6 +58,7 @@ public CustomCollection(int initialCapacity) {
5758 this .elements = new Object [initialCapacity ];
5859 }
5960
61+ @ Override
6062 public boolean add (T element ) {
6163 // Проверяем достаточно ли места для добавления
6264 if (size == elements .length ) {
@@ -70,6 +72,7 @@ public boolean add(T element) {
7072 return true ;
7173 }
7274
75+ @ Override
7376 public void removeByIndex (int index ) {
7477 if (index < 0 || index >= size ) {
7578 throw new IndexOutOfBoundsException ("Index cannot be less then 0 or more then " + size );
@@ -90,20 +93,34 @@ public void removeByIndex(int index) {
9093 elements [--size ] = null ;
9194 }
9295
96+ @ Override
97+ public boolean remove (T element ) {
98+ for (int i = 0 ; i < size ; i ++) {
99+ if (Objects .equals (element , elements [i ])) {
100+ removeByIndex (i );
101+ return true ;
102+ }
103+ }
104+ return false ;
105+ }
106+
107+ @ Override
93108 public void clear () {
94109 for (int i = 0 ; i < size ; i ++) {
95110 elements [i ] = null ;
96111 }
97112 size = 0 ;
98113 }
99114
115+ @ Override
100116 public T get (int index ) {
101117 if (index < 0 || index >= size ) {
102118 throw new IndexOutOfBoundsException ("Индекс не может быть меньше 0 или больше " + size );
103119 }
104120 return (T ) elements [index ];
105121 }
106122
123+
107124 public T set (int index , T element ) {
108125 if (index < 0 || index >= size ) {
109126 throw new IndexOutOfBoundsException ("Индекс не может быть меньше 0 или больше " + size );
@@ -121,6 +138,7 @@ public T set(int index, T element) {
121138 *
122139 * @return последовательный {@code Stream} элементов этой коллекции
123140 */
141+ @ Override
124142 public Stream <T > stream () {
125143 return (Stream <T >) Arrays .stream (elements , 0 , size );
126144 }
@@ -135,32 +153,23 @@ public Stream<T> stream() {
135153 * в процессе выполнения операции.
136154 *
137155 * @param collection коллекция, содержащая элементы для добавления
138- * @return {@code true} если эта коллекция изменилась в результате вызова
139156 */
140- public boolean addAll (CustomCollection <? extends T > collection ) {
141- // Проверяем, что переданная коллекция не null и не пустая
157+ public void addAll (CustomCollection <? extends T > collection ) {
142158 if (collection == null || collection .isEmpty ()) {
143- // Возвращаем false, так как нечего добавлять
144- return false ;
159+ return ;
145160 }
146161
147- int requiredCapacity = size + collection .size ();
148- if (requiredCapacity > elements .length ) {
149- increaseCapacity (requiredCapacity );
150- }
151162 for (T element : collection ) {
152- // Добавляем элемент в конец массива
153- // elements[size] = element - добавляет элемент на текущую позицию
154- // size++ - увеличивает счетчик элементов
155- elements [size ++] = element ;
163+ add (element );
156164 }
157- return true ;
158165 }
159166
167+ @ Override
160168 public int size () {
161169 return size ;
162170 }
163171
172+ @ Override
164173 public boolean isEmpty () {
165174 return size == 0 ;
166175 }
0 commit comments