【发布时间】:2011-04-06 03:22:42
【问题描述】:
我有一个自定义的 ArrayList 接口,它扩展了 Comparable 类并按升序排列。我正在处理的类正在实现这个接口。
我的问题是我需要编辑 add 方法,以便它将一个元素添加到 ArrayList,使 List 保持有序,并确保没有重复。
用不同的方法来完成这一切很容易,但这是不可能的。我需要一种方法来完成这一切,以便在调用该方法时(只要它不是重复的)元素被添加到正确的位置。
最重要的是,要检查插入方法的索引的位置,我必须使用从 Comparable 类继承的 compareTo() 方法。唯一的问题是我必须在我正在处理的类中实现我自己的 compareTo() 方法。我已经看遍了,我对如何为这个特定的课程做这件事感到困惑。
到目前为止,这是我的代码:
public void add(E item) throws IndexOutOfBoundsException {
if (contains(item)) {
throw new IllegalArgumentException("This is a duplicate!");
}
//here is where I need the implementation to add the item to the array, in order
}
然后这是我的 compareTo() 方法:
public int compareTo(E item) {
if () {
return -1;
}
else if () {
return 1;
}
else {
return 0;
}
}
【问题讨论】:
-
List 有一个 contains(Object o) 方法,可以执行您的循环正在执行的操作。它使代码更简单。
-
提示:插入排序 (en.wikipedia.org/wiki/Insertion_sort)
-
哪部分不明白?我们不应该为你做功课。 :) 你必须在考试时间知道这些东西。
-
使用 == 意味着完全相同的对象在列表中,而不是两个对象相等。使用 .equals(对象 o)。 -- 或者只使用 contains(Object o)
-
1) 我假设您有一个扩展 ArrayList 的类。 2)您要添加的项目是什么?你如何比较/排序它们?
标签: java arraylist comparator comparable