У меня проблемы с добавлением элемента в мой набор массивов, его нужно упорядочить в порядке возрастания, и по какой-то причине я просто добавляю его, а он не упорядочивает его.
Вот мой код:
public boolean add(AnyType x){
if(this.contains(x))
return false;
else if(this.isEmpty()){
items[theSize]=x;
theSize++;
return true;
}
else{
if( theSize == items.length )
this.grow();
//Here goes code for adding
/*AnyType[] newItems = (AnyType[]) new Comparable[items.length];
newItems = items;
for(int i=0;i<theSize;i++)
if(items[i].compareTo(x)>0){
newItems[i]=x;
newItems[i+1]=items[i];
for(int j=i+1;j<theSize;j++)
newItems[j]=items[i];
items = newItems;
theSize++;
return true;
}
//*/
items[theSize]=x; //*/
theSize++;
return true;
}
}
Метод не должен позволять элементу повторяться, поэтому, если вы попытаетесь добавить что-то, что уже есть, он должен вернуть false. Если массив пуст, просто добавьте к items [0], а затем я попытался создать новый массив, и как только вы найдете элемент, размер которого больше, чем тот, который я ввожу, скопируйте все в новый массив, добавьте новое значение и просто добавьте остальные, а затем сделать items = newItems;
, но это не сработало. Я пытался пару часов, поэтому я просто решил обратиться за помощью.
Мой класс SortedSet определен так:
public class SortedSet<AnyType extends Comparable> implements Set<AnyType>
{
private AnyType[] items;
private int theSize;
public SortedSet(){
theSize = 0;
items = (AnyType[]) new Comparable[5];
}
Я знаю, что есть и другие способы сделать это, например, с помощью TreeMap, но это нужно сделать как массив.
Спасибо