Java — функция «вставка» для универсальных реализаций

#java #function #generics #insert

#java #функция #дженерики #вставить

Вопрос:

 public interface IGenericList<T> {
    void insert(T element);
    void println();

}


public class GenericList<T> implements IGenericList<T> {

    private T param;

    public GenericList(T rootValue) {
        param = rootValue;
    }

    @Override
    public void insert(T element) {
        param = param   element; //error "Operator   cannot be applied to 'T', 'T'
    }
    @Override
    public void println() {
        System.out.println(param);
    }
}
 

Как я могу реализовать эту функцию? «вставить»
Я новичок, и это все, что мне дано в задаче

Комментарии:

1. У вас должно быть что-то похожее на фактический список. Прямо сейчас у вас есть место только для одного элемента; вы ничего не можете вставить с тем, что у вас есть.

Ответ №1:

Я не знаю, для чего вам нужен IGenericList, потому что интерфейс списка уже является общим и для всех реализаций, но я не знаю всех бизнес-аспектов. Для вставки некоторых данных вам нужна правильная структура данных, классическая структура данных для этого — array . Я написал общую логику для типа поля массива в общем стиле.

 public interface IGenericList<T> {
        void insert(int index, T element);

        void append(T element);

        void println();
    }

    public static class GenericList<T> implements IGenericList<T> {

        private T[] params;

        public GenericList(T[] rootValue) {
            this.params = rootValue;
        }

        @Override
        public void insert(int index, T element) {
            if(index > params.length) {
                throw new IndexOutOfBoundsException();
            }
            params[index] = element;
        }

        @Override
        public void append(T element) {
            //find first null value or expand array and add value
        }

        @Override
        public void println() {
            System.out.println(Arrays.toString(params));
        }
    }