/ / Изключение в нишка “main” java.lang.IndexOutOfBoundsException: Индекс: 10, Размер: 0. JAVA - java, arraylist

Изключение в конец "основен" java.lang.IndexOutOfBoundsException: Индекс: 10, Размер: 0. JAVA - java, arraylist

Искам да използвам ArrayList да представлява приоритетната опашка. Затова искам да добавя елемент на конкретна позиция на ArrayList, Но когато го пусна, системата ми каза Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 10, Size: 0.

public class PriorityQueue
{
public ArrayList<String> Queue=new ArrayList<>();

public void enqueu(String s, int p)
{
Queue.add(p,s);
}

public void dequeu()
{
String temp=Queue.get(Queue.size()-1);
Queue.remove(temp);
}
public void print()
{
String[] print=new String[Queue.size()];
print=Queue.toArray(print);
for(int i=0;i<Queue.size();i++)
{
System.out.println(print[i]);
}


}

public static void main(String[] args)
{
PriorityQueue test= new PriorityQueue();
test.enqueu("x",10);
test.enqueu("Y",1);
test.enqueu("Z",3);

test.print();
}}

Отговори:

0 за отговор № 1

Тъй като Javadoc за add(int index, E element) на ArrayList казва:

Вмъква указания елемент в указаната позиция в този списък. Премества елемента, който понастоящем е на тази позиция (ако има такъв) и който и да е следващите елементи вдясно (добавя един към техните индекси).

Хвърля: IndexOutOfBoundsException - ако индексът е извън обхвата (индекс <0 || index> размер ())

Правиш:

test.enqueu("x",10);

който извиква:

Queue.add(10,"x"); // "Queue" is the arrayList

Опитвате се да добавите низ към индекс 10, където размерът на ArrayList е 0. Това означава, че се опитвате това, където index> size (), Така че получавате IndexOutOfBoundsException.

Също така помислете повече за своя дизайн и какво трябва да направите. Enqueue не работи по този начин, което се опитвате да направите.