Вопросы, имеющие приоритет добавить - PullRequest
0 голосов
/ 04 апреля 2011

Я пишу программу, которая должна сортировать arrayList, но всякий раз, когда я переопределяю функцию add, я получаю следующее сообщение: «add (Java.lang.String) в SortedList не может реализовать add (E) в java.util .List; попытка использовать несовместимый тип возвращаемого значения: void required: boolean "

Я не совсем уверен, что я делаю неправильно. Ниже мой код. Заранее спасибо!

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);
    }
}

Ответы [ 3 ]

0 голосов
/ 04 апреля 2011

Похоже, это говорит вам: "add (Java.lang.String) в SortedList не может реализовать add (E) в java.util.List; попытка использовать найденный несовместимый тип возврата: void required: boolean"

Изменить public void add(String x)

на

public boolean add(String x)

[Также сделать так, чтобы оно действительно возвращало логическое значение]

0 голосов
/ 07 апреля 2011

К вашему сведению, похоже, вы пытаетесь использовать композицию и одновременно смешивать ее с наследованием. Ваш метод 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;
}
0 голосов
/ 04 апреля 2011

Это довольно очевидно из сообщения об ошибке,

Ваш метод 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). 
...