Как создать массив связанных списков в java? - программирование

Как создать массив связанных списков в java?

Поэтому мне нужно взять входные ребра двухстороннего графа следующим образом:

6
1 3
1 2
1 5
2 7
2 4
2 9

Первое число - это число ребер. После этого перечислены грани. Посмотрите, как, например, вершина 1 имеет несколько разных ребер, и я хочу отслеживать, с чем связан 1, я думал, что каждая вершина графа будет иметь какой-то список вершин, с которыми она связана, что заставляет меня попытаться создайте массив связанных списков, но я не уверен, как это сделать. Я попробовал

LinkedList<Integer>[] vertex = new LinkedList[5];
int i = 0, m = 6;
while(i!=m){
    int temp = sc.nextInt();
    int temp2 = sc.nextInt();
    vertex[temp].add(temp2);
    i++;
}

Но я получаю исключение nullpointer в строке добавления.

4b9b3361

Ответ 1

LinkedList<Integer>[] vertex = new LinkedList[5];
int i = 0, m = 6;
while(i!=m){
  int temp = sc.nextInt();
  int temp2 = sc.nextInt();

  // Make sure the list is initialized before adding to it
  if (vertex[temp] == null) {
     vertex[temp] = new LinkedList<Integer>();
  }

  vertex[temp].add(temp2);
  i++;
}

Ответ 2

//initialize array
LinkedList<Integer>[] vertex = new LinkedList[5];
//initialize array elements(objects of LinkedList)
for (int j=0; j<5; j++)
    vertex[i]=new LinkedList<Integer>();

int i = 0, m = 6;
while(i!=m){
    int temp = sc.nextInt();
    int temp2 = sc.nextInt();
    vertex[temp].add(temp2);
    i++;
}

Обычно на Java не поддерживаются массивы. В качестве альтернативы вы можете использовать это:

//initialize array
List<LinkedList<Integer>> vertex = new ArrayList<LinkedList<Integer>>();
//initialize arraylist elements(objects of LinkedList)
for (int j=0; j<5; j++)
    vertex.add(new LinkedList<Integer>());