0

我正在编写一个应该对 arrayList 进行排序的程序,但是每当我覆盖 add 函数时,我都会收到以下消息:“SortedList 中的 add(Java.lang.String) 无法在 java.util.List 中实现 add(E);试图使用不兼容的返回类型发现:需要无效:布尔“

我不确定我做错了什么。下面是我的代码。提前致谢!

import java.util.ArrayList;
import java.util.List;
import java.lang.String;

public class SortedList extends ArrayList<String>
{
    private ArrayList<String> a;

    public SortedList()
    {
        super();
    }
    public SortedList(int cap)
    {
        super(cap);
    }
    public void add(String x)
    {
        for(int i=0; i<a.size(); i++)
            if(x.compareTo(a.get(i))>=0 && x.compareTo(a.get(i+1))<=0)
                super.add(x);
    }
}
4

3 回答 3

0

从错误消息中很明显,

您的 add 方法需要返回值为 true 的布尔值,请参阅此处的 java 文档

public boolean add(Object o)

Appends the specified element to the end of this list (optional operation).

Lists that support this operation may place limitations on what elements may be added to this list. In particular, some lists will refuse to add null elements, and others will impose restrictions on the type of elements that may be added. List classes should clearly specify in their documentation any restrictions on what elements may be added.

Specified by:
    add in interface Collection

Parameters:
    o - element to be appended to this list. 
Returns:
    true (as per the general contract of the Collection.add method). 
于 2011-04-04T04:33:57.023 回答
0

这似乎告诉您:“SortedList 中的 add(Java.lang.String) 无法在 java.util.List 中实现 add(E);尝试使用不兼容的返回类型发现:需要 void:布尔值”

改变 public void add(String x)

public boolean add(String x)

[也让它实际上返回一个布尔值]

于 2011-04-04T04:33:58.293 回答
0

仅供参考,您似乎正在尝试使用组合并将其与继承混合。您的 add 方法不起作用,因为您正在比较委托中的给定字符串“a”,但调用的是 super.add()。如果您添加的字符串应该是列表中的最后一个或者如果它是第一个添加的,您还将获得 ArrayOutOfBoundsException。它应该是:

@Override
public boolean add(String x) {
    boolean added = false;
    for(int i=0; i<(a.size()-1); i++) {
        if(x.compareTo(a.get(i))>=0 && x.compareTo(a.get(i+1))<=0) {
            a.add(i, x);
            added = true;
            break;
        }
    }
    // String is either the first one added or should be the last one in list
    if (!added) {
        a.add(x);
    }
    return true;
}
于 2011-04-07T04:12:15.073 回答