Итак, прежде чем я пришел сюда, чтобы попросить вас, ребята, о помощи, я действительно искал здесь, в сообществе, возможные возможные вопросы по моей проблеме, но мне не повезло. Ну, я использую LoopingListIterator
, который расширяет ListIterator
и implements List interface
. Я хочу добавить объект в свой список (из LoopingListIterator
) и мне нужно сравнить элемент, который я добавляю, с теми элементами, которые уже есть в списке, этот «компаратор» сравнивает двойные значения моего объекта.
Объект имеет 4 атрибута, (Obj key, int, double spx, int)
моего класса "TestEvent<T>"
. В этом классе у меня есть CompareTo, равно и hashCode. Это key
из Obj
, является значением int
. Так что это мой **compareTo of TestEvent<T> class**
. Здесь элементы сортируются в соответствии с этими двойными значениями в порядке убывания.
public class TestEvent<T> implements Comparable<TestEvent<T>>
{
public TestEvent(Obj obj, int p, double spx, int pos)
{
this.obj = obj;
this.p = p;
this.spx = spx;
this.pos = obj.pos;
}
public int compareTo (TestEvent<T> te )
{
if(spx > te.spx)
{
return -1;
}
else if (spx < te.spx)
{
return 1;
}
else
{
return (obj.key > te.obj.key) ? 1 : ((obj.key < te.obj.key) ? -1 : 0);
}
}
}
У меня есть другой класс, TestLinkedList<T>
, который extends the LoopingListIterator
, Override
метод add
. OBS: Я знаю, что мой метод add
неправильный, нужна помощь, чтобы добавить элементы в соответствии с spx values
, , сравнивающими элементы.
public class TestLinkedList<T> extends LoopingListIterator<TestEvent<T>>
{
public List<TestEvent<T>> listTestEvent = new LinkedList<TestEvent<T>>();
public TestLinkedList (List<TestEvent<T>> e_LinkedList)
{
super(e_LinkedList);
}
@Override
public void add (TestEvent<T> pe)
{
ListIterator< TestEvent <T>> listItr = listTestEvent.listIterator();
while(listItr.hasNext())
{
TestEvent <T> Event = listItr.next();
if(pe.spx > testEvent.spx)
{
continue;
}
else if(pe.spx < testEvent.spx )
{
super.add(pe);
}
}
}
}
В моем основном классе я создаю объект TestLinkedList<T> class
, который я передаю в качестве аргумента, список (созданный с помощью LoopingListIterator
). Я хочу переопределить метод add , поэтому, когда я перебираю список и добавляю объект, это должно быть сделано путем сравнения spx values
.
My основной класс:
public class MainClass<T>
{
protected TestLinkedList<T> testEventLinkedList;
protected List<TestEvent<T>> E_LinkedList;
public void execute()
{
E_LinkedList = new LinkedList<TestEvent<T>>();
// there's a loop here to add objects in the linked list
E_LinkedList.add(testEvent);
// end loop
testEventLinkedList = new TestLinkedList <T>(E_LinkedList);
testEventLinkedList. listTestEvent.addAll(E_LinkedList);
while(testEventLinkedList.hasNext())
{
TestEvent<T> test = testEventLinkedList.next();
testEventLinkedList.remove();
// I need this object here, added on my list sorted by the **spx value**
// thus, probably, this new object will be added at the end of the list, according to the spx value.
testEventLinkedList.add (new TestEvent<T>(test.obj, test.p, spx, pos));
}
}
}