Для моего метода DeleteTask, я хочу, чтобы иметь возможность удалять задачи, которые помечены как завершенные, но мне было дано с этой ошибкой:Как удалить элементы из arraylist?
java.lang.IndexOutOfBoundsException: Index:1, Size: 1 (in java.util.ArrayList).
Может кто-нибудь мне помочь?
import java.util.ArrayList;
public class TaskManager
{
private ArrayList<Task>tasks;
private int nextTaskId;
public TaskManager(){
tasks = new ArrayList<Task>();
nextTaskId = 1;
}
public int getCount(){
return tasks.size();
}
public String addTask(String description, int estimatedLength){
Task task1 = new Task(nextTaskId, description, estimatedLength);
tasks.add(task1);
boolean add = true;
if (tasks.contains(task1) == true){
nextTaskId++;
return "Task added.";
}else{
return "Error: not added.";
}
/*ArrayList<Task> tasks = new ArrayList<Task>();
for(int i = 0; i < tasks.size(); i++){
Task taskatm = new Task();
task.add(taskatm);
}
return "sq";*/
}
public Task findById(int ID){
int i = 0;
while(i < tasks.size()){
Task task = tasks.get(i);
i++;
if(task.getId() == ID){
return task;
}
}
return null;
}
public Task setCompleted(int completedId){
if(findById(completedId) != null){
findById(completedId).setDone();
return findById(completedId);
}
return null;
}
public Task deleteTask(int deleteId){
if(setCompleted(deleteId) != null){
return tasks.remove(deleteId);
}
return null;
}
}
'индекс ArrayList' начинается с 0. Таким образом, если вы хотите, чтобы удалить первый (и только), вы удаляете элемент в позиции 0. –
, когда вы вызываете deleteTask (int deleteId)? проверить 'deletedId'? может быть, он превышает фактический размер –