В качестве примера я разрабатываю простой MySortedSet в java, который реализует интерфейс SortedSet. Он подкрепляется простым массивом, который является массивом E [].Как удалить объект из массива Java (не использовать коллекции)
У меня есть несколько вопросов по поводу, что:
Это класс: (я не пишу весь код, а не связанные части)
public class MySortedSet<E> implements SortedSet<E>, Iterator<E> {
private E[] array;
private Comparator<? super E> _comparator;
private int size = 0;
private int capacity;
@SuppressWarnings("unchecked")
public MySortedSet() {
this.capacity = 10;
this.array = (E[]) new Object[this.capacity];
// this.array = Array.newInstance(Class<E> var,int size);
// We have to get Class<E> from outside caller.
}
}
Поскольку он принимает все вроде типа от примитивного к ссылочные типы и т. д. Я не совсем уверен, что при удалении элемента назначение нулевого значения является хорошим способом вместо удаленного элемента. Поскольку Java инициализирует примитивные типы с 0. Таким образом, null работает только для ссылочных типов.
Ниже, вероятно, очень плохой дизайн:
@Override
public boolean remove(Object o) {
int indexOfElement = this.find(o);
boolean removed = false;
if (indexOfElement != -1) {
this.array[indexOfElement] = null;
removed = true;
}
return removed;
}
Может кто-нибудь сказать мне, что лучший способ, чтобы удалить элемент из массива?
Edit:
Честно говоря, что я имею в виду, чтобы удалить элемент из простого массива, как скопировать весь массив без удаленного элемента в новый массив, но я не уверен, насколько эффективным было бы с точки зрения производительности и т. д.
Это не просто удаление элемента из массива. Вы пытаетесь реализовать 'remove' для реализации' SortedSet', поддерживаемой массивом. Я думаю, что это поможет решить вопрос, ясно ли это в названии. –
Эта реализация не принимает примитивные типы, насколько я могу видеть. – Perception
@Перцепция: Я считаю, что он принимает примитивные типы вместо E. Зачем вы так говорите? – Tarik