Hoe kan ik een array van gekoppelde lijsten in Java maken?

Dus ik moet de randen van een tweedelige grafiek als volgt invoeren:

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

Het eerste getal is het aantal randen. Daarna worden de randen vermeld. Zie hoe bijvoorbeeld vertex 1 meerdere verschillende randen heeft en ik wil bijhouden waar 1 mee verbonden is. maak een reeks gelinkte lijsten, maar ik weet niet zeker hoe ik dat zou doen. Ik heb geprobeerd

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

Maar ik krijg een nullpointerexception op de add-regel.


Antwoord 1, autoriteit 100%

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

Antwoord 2, autoriteit 21%

//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++;
}

Normaal gesproken worden arrays niet aangemoedigd in Java. Als alternatief kunt u dit gebruiken:

//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>());

Other episodes