如何使用compareTo()方法比较List中的对象?

时间:2013-09-25 05:35:36

标签: java list compare nodes

我有一个名为ListNode的类,其作用类似于列表。使用这个类我想建立一个Magazine对象列表。在我的MagazineList类中,我想编辑add方法,因此当我插入Magazine时,它们将按字母顺序排序。我怎样才能做到这一点?

我的ListNode课程:

    public class ListNode {
      private Object value;
      private ListNode next;

      //intializes node
      public ListNode (Object initValue, ListNode initNext) {
       value = initValue;
       next = initNext;
      }

    //returns value of node
    public Object getValue () {
      return value;
    }

     //returns next reference of node
    public ListNode getNext () {
       return next;
    }

     //sets value of node
    public void setValue (Object theNewValue) {
      value = theNewValue;
    }

    //sets next reference of node
    public void setNext (ListNode theNewNext) {
       next = theNewNext;
    }
   }

我的MagazineList课程的添加方法:

    //when instantiated, MagazineList's  list variable is set to null
    public void add (Magazine mag) {

      ListNode node = new ListNode (mag, null);
      ListNode current;

      if (list == null)
         list = node;
      else {
         current = list;
         while (current.getNext() != null)
            current = current.getNext();
         current.setNext(node);
      }
   }

我使用此方法来比较Magazines类中的Magazine

 //compares the names (Strings) of the Magazines.
  public int compareTo(Magazine mag2) {
     return (title).compareTo(mag2.toString());
  }

2 个答案:

答案 0 :(得分:1)

喜欢这个

//compares the names (Strings) of the Magazines.
public int compareTo(Magazine mag2) {
    //assume that you have getTittle() method which returns Title
    return title.compareTo(mag2.getTitle());
}

答案 1 :(得分:1)

执行此操作的一种简单方法是始终对列表进行排序。

然后,每次从头部开始插入新节点时,应使用compareTo方法将新节点与列表中的每个节点进行比较,并在节点之后插入新节点{ {1}}返回正数。

基本实现可能是这样的。你需要改进它并考虑边缘情况等。

compareTo