Java 在这种情况下,如何正确实现Comparable for List?

Java 在这种情况下,如何正确实现Comparable for List?,java,list,comparable,Java,List,Comparable,我要做的是使用compareTo()方法比较removedItemFromList1和removedItemFromList2,然后将较小的值插入modifiedList3,并将两个RemovedFromList1或2中较大的值放回其原始列表。如果我有足够长的头发可以拔,它现在已经被拔出来了…我是不是投错了?如何正确地使用compareTo()方法来实现这一点 public class List<Integer> implements Comparable { privat

我要做的是使用compareTo()方法比较removedItemFromList1和removedItemFromList2,然后将较小的值插入modifiedList3,并将两个RemovedFromList1或2中较大的值放回其原始列表。如果我有足够长的头发可以拔,它现在已经被拔出来了…我是不是投错了?如何正确地使用compareTo()方法来实现这一点

public class List<Integer> implements Comparable 
{
    private ListNode<Integer> firstNode;
    private ListNode<Integer> lastNode;


    public void insertAtBack (Integer insertItem)
    {
        if ( isEmpty())
            firstNode = lastNode = new ListNode<Integer>(insertItem);
        else 
            lastNode = lastNode.nextBasket = new ListNode<Integer>( insertItem );
    }

    public Integer removeFromBack() 
    {   
        Integer removedItem = (Integer) lastNode.topBucketInBasket;

        if ( firstNode == lastNode)
            firstNode = lastNode = null;
        else
        {
            ListNode<Integer> current = firstNode;

            while ( current.nextBasket != lastNode)
                current = current.nextBasket;

            lastNode = current;
            current.nextBasket = null;
        }

        return removedItem;
    }

    public boolean isEmpty()
    {
        return firstNode == null;
    }

    public List<Integer> merge(List<Integer> list1, List<Integer> list2)
    {
        List<Integer> modifiedList3 = new List<Integer>();

         Integer removedItemFromList1 = (Integer) list1.removeFromBack();
         Integer removedItemFromList2 = (Integer) list2.removeFromBack();

          ((Comparable) removedItemFromList1).compareTo( removedItemFromList2);

         int comparison = compareTo(removedItemFromList2);

         if ( comparison == 1)
            modifiedList3.insertAtBack(removedItemFromList2); 
            list1.insertAtBack(removedItemFromList1);

         if ( comparison == -1)
             modifiedList3.insertAtBack(removedItemFromList1);
            list2.insertAtBack(removedItemFromList2);

        return modifiedList3;   
    }
    @Override
    public int compareTo(Integer itemToCompare)
    {
        final int BEFORE = -1;
        final int AFTER = 1;
        if (this.removedItemFromList1 < list2.removedItemFromList2) return BEFORE;
        if (this.removedItemFromList1 > list2.removedItemFromList2) return AFTER;
    }

}
公共类列表实现了可比较的
{
私有ListNode firstNode;
私有ListNode lastNode;
public void insertback(整数insertItem)
{
if(isEmpty())
firstNode=lastNode=newlistnode(插入项);
其他的
lastNode=lastNode.nextBasket=new ListNode(插入项);
}
公共整数removeFromBack()
{   
整数removedItem=(整数)lastNode.TopBucketEntry;
if(firstNode==lastNode)
firstNode=lastNode=null;
其他的
{
ListNode当前=第一个节点;
while(current.nextBasket!=lastNode)
current=current.nextBasket;
lastNode=当前;
current.nextBasket=null;
}
返回移除的项目;
}
公共布尔值为空()
{
返回firstNode==null;
}
公共列表合并(列表1、列表2)
{
List modifiedList3=新列表();
整数removedItemFromList1=(整数)list1.removeFromBack();
整数removedItemFromList2=(整数)list2.removeFromBack();
((可比)从列表1中删除的项)。与(从列表2中删除的项)进行比较;
int comparison=comparieto(从列表2中删除项);
如果(比较==1)
修改后的列表3.InsertBack(从列表2中删除项);
列表1.InsertBack(从列表1中删除项);
如果(比较==-1)
修改后的列表3.insertback(从列表1中删除项);
列表2.InsertBack(从列表2中移除项);
返回修改列表3;
}
@凌驾
公共整数比较(整数项比较)
{
之前的最终整数=-1;
之后的最终整数=1;
如果(this.removedItemFromList1list2.removedItemFromList2)在之后返回;
}
}

您应该实现通用版本
Comparable
,而不是原始版本
Comparable

((Comparable) removedItemFromList1).compareTo( removedItemFromList2);
另外,在下面的

public class List<Integer> implements Comparable
或者可以是其他内容,而不是
MyList

如果您实施
可比
,则应

@Override
public int compareTo(Object itemToCompare) {
@Override
public int compareTo(Integer itemToCompare)
如果
可比的
(我想这就是你要找的那一个),它应该是

@Override
public int compareTo(Object itemToCompare) {
@Override
public int compareTo(Integer itemToCompare)
区别在于参数类型-
对象
整数

它有点凌乱,不太清楚你想表达什么

但是,
List
类实现的
Comparable
表示您希望将
List
的一个实例与另一个实例进行比较。如果是这样的话,它应该是这样的-

public class MyList<E> implements Comparable<MyList> {

    @Override
    public int compareTo(MyList other) {
        //compare and return result
    }
你不需要做这些

removedItemFromList1.compareTo(removedItemFromList2);

够了。如果这就是您所需要的,那么您根本不需要实现
Comparable
,因此也可以删除
compareTo
方法

public interface Comparable<T> {

  public int compareTo(T t){




  }

}

---谢谢你指出这一点。你能清楚地看到我在copmareTo()方法中做错了什么吗?为什么编译器不高兴?如何正确比较上述两个字段?你能教我Integer和java.lang.Integer的区别吗?我理解你的修订,但我不太理解的是如何成功完成方法compareTo()。在compareTo方法中,Eclipse向我提供了一个指示器,表明list1(我刚刚将这两个实例的list1改为list1)和list2对象不能定义为变量。这是什么意思?我怎么修理?