Я работаю над заданием для курса программирования, за которым я следую, и я использую Список для хранения данных. Класс List:Как мне сделать список отсортированным?
public List() {
init();
}
protected Node<E> first, current, last;
public int numberOfNodes;
public boolean isEmpty() {
return numberOfNodes == 0;
}
public List<E> init() {
numberOfNodes = 0;
first = current = last = null;
return this;
}
public int size() {
return numberOfNodes;
}
public List<E> insert(E d) {
E copy = (E)d.clone();
if (isEmpty()) {
first = current = last = new Node(copy);
numberOfNodes += 1;
return this;
}
else{
for (current = first; current != null; current = current.next){
if(current.next== null){
current.next = last = new Node(copy);
last.prior = current;
last.next = null;
numberOfNodes += 1;
return this;
}
else{
Node<E> newNode = new Node(copy);
current.next.prior = newNode;
newNode.next = current.next;
newNode.prior = current;
current.next = newNode;
current = newNode;
numberOfNodes +=1;
return this;
}
}
}
return this;
}
public E retrieve() {
return (E) current.data.clone();
}
public List<E> remove() {
if (isEmpty()){
return init();
}
else if (numberOfNodes == 1){
return init();
}
else if (current == first) {
first = current = current.next;
current.prior = null;
numberOfNodes -= 1;
}
else if (current == last) {
last = current = current.prior;
current.next = null;
numberOfNodes -= 1;
}
else {
current.prior.next = current.next;
current.next.prior = current.prior;
current = current.next;
numberOfNodes -= 1;
}
return this;
}
public boolean find(E d) {
current = first;
while((current!=null && !(d.compareTo(current.data)==0))){
current=current.next;
}
if (current==null){
return false;
}else{
return true;
}
}
public boolean setFirst() {
if(isEmpty()){
return false;
}
else{
current = first;
return true;
}
}
public boolean setLast() {
if(isEmpty()){
return false;
}
else{
current = last;
return false;
}
}
public boolean getNext() {
if(isEmpty()||current == last){
return false;
}
else{
current = current.next;
return true;
}
}
public boolean getPrior() {
if(isEmpty()||current == first){
return false;
}
else{
current = current.prior;
return true;
}
}
public List<E> clone() {
List<E> clone;
try{
clone = (List<E>)super.clone();
} catch(CloneNotSupportedException e){
throw new Error("This cannot be cloned!");
}
clone.init();
for(Node n = first; n != null; n = n.next){
clone.insert((E)n.clone().data);
}
clone.numberOfNodes = this.numberOfNodes;
return clone;
}
Теперь задание, чтобы сделать список отсортированный список, сортировка элементов от большого к малому. Мне нужно сделать это в отдельном классе SortedList.
я отталкивался, но у меня действительно нет понятия о том, что делать дальше:
public class SortedList extends List implements Comparable {
public int compareTo(Object o) {
// TODO Auto-generated method stub
return 0;
}
}
Я использую список в моей программе для двух разных объектов: Я использую список в моем Set классе , Множество представляет собой набор натуральных чисел. Например: {1,2,3,4,5} - множество.
Кроме того, я использую этот список в классе Table. Таблица состоит из переменных. Переменная состоит из ключа и значения. Ключ - это идентификатор (например, Alfa), а значением является Set {1,2,3}. Назначение - упорядочить элементы в списке от большого до малого.
Таким образом, SortedList должен быть отдельным классом, который расширяет класс списка! Как я могу это сделать? Большое большое спасибо!
, какой элемент вы хотите быть отсортирован? –
Вы можете выполнить сортировку вставки, глядя вниз по списку, пока не найдете элемент, который меньше, чем тот, который вы добавляете. Это ваша точка ввода. –
Я использую список в своей программе для двух разных объектов: Я использую список в своем классе Set. Множество представляет собой набор натуральных чисел. Например: {1,2,3,4,5} - множество. Кроме того, я использую этот список в своем классе Table. Таблица состоит из переменных. Переменная состоит из ключа и значения. Ключ - это идентификатор (например, Alfa), а значением является Set {1,2,3}. Назначение - упорядочить элементы в списке от большого до малого. Как я могу это сделать? Большое большое спасибо! –