从ArrayList返回特定元素但是出现类型不匹配错误?

时间:2014-04-22 00:41:24

标签: java arraylist

我目前正在学习Java的第二学期,对于这个项目,我们应该使用ArrayLists,为每个循环和线性搜索一起增强。对于项目,我创建了一个任务管理器,并且使用这种方法,我希望能够在ArrayList中搜索日期,然后使用正确的日期返回整个任务。我从下面突出显示的行中得到此错误"类型不匹配:无法从Task转换为ArrayList"由于赋值指南,此方法必须将其作为ArrayList返回,我做错了什么?我该如何解决?

public ArrayList<Task> findTasksByDate(Date date) {
            while(i<taskMan.size()); {
            for (Task element: taskMan) {
                if (date.equals(taskMan.get(i).getDueDate())) {  
                return taskMan.get(i);//error with this line
                }
                return null;
            }
            i++;
        }
}

3 个答案:

答案 0 :(得分:1)

要返回ArrayList,您需要声明一个本地ArrayList,将该元素添加到列表中,然后返回该列表。像这样:

public ArrayList<Task> findTasksByDate(Date date) {
            ArrayList<Task> returnList = new ArrayList<Task>();
            while(i<taskMan.size()); {
            for (Task element: taskMan) {
                if (date.equals(taskMan.get(i).getDueDate())) {  
                   returnList.add(taskMan.get(i));
                return returnList;
                }
                return null;
            }
            i++;
        }
}

答案 1 :(得分:0)

您的方法声明:

public ArrayList<Task> findTasksByDate(Date date) {

您将返回Task,而不是ArrayList Task

将其更改为:

public Task findTasksByDate(Date date) {

答案 2 :(得分:-1)

您的方法返回ArrayList,但您想返回一个Task。所以数组元素。

你的方法应该返回ArrayList

的任务

创建一个新的ArrayList并将返回项添加到此新列表中。

public ArrayList<Task> findTasksByDate(Date date) {

            while(i<taskMan.size()); {
            for (Task element: taskMan) {
                if (date.equals(taskMan.get(i).getDueDate())) {  
                ArrayList<Task> returnList = new ArrayList<>(); // create new list.
                returnList.add(taskMan.get(i));//add
                return returnList; // return the new collection
                }
                return null;
            }
            i++;
        }
}