Java Code

```import java.util.*;

class Graph {

int vertices;

@SuppressWarnings("unchecked")
public Graph(int vertices) {
this.vertices = vertices;

for (int i = 0; i < vertices; i++) {
}
}

public void addEdge(int source, int destination) {
}

public void printGraph() {
for (int i = 0; i < vertices; i++) {
System.out.print(i + " => ");
System.out.print(nbr + " ");
}
System.out.println();
}
}

public static void main( String args[] ) {
Graph g = new Graph(4);

g.printGraph();
}

}
```

Output:

```Adjacency List of Undirected Graph
0  =>  1 2
1  =>  0 3
2  =>  0 3
3  =>  1 2```

C++ Code:

```#include<bits/stdc++.h>
using namespace std;

class Graph {
int vertices;

public:
Graph(int v) {
vertices = v;
}

void addEdge(int source, int destination) {
adjacencyList[destination].push_back(source); // comment this line for directed graph
}

void printGraph() {
cout << "Adjacency List of Undirected Graph" << endl;
for (int i = 0; i < vertices; i++) {
cout << i << " => ";
cout << nbr << " ";
}
cout << endl;
}
}
};

int main() {
Graph g(4);
g.printGraph();
return 0;

}
```

Output:

```Adjacency List of Undirected Graph
0  =>  1 2
1  =>  0 3
2  =>  0 3
3  =>  1 2```

Python Code:

```class Graph:

def __init__(self, vertices):
self.vertices = vertices
self.adjacency_list = [[] for i in range(self.vertices)]

self.adjacency_list[destination].append(source) # comment this line for directed graph

def print_graph(self):
for i in range(self.vertices):
print(i, " => ", end = " ")
print(nbr, end = " ")
print()

if __name__ == '__main__':

g = Graph(4);
```Adjacency List of Undirected Graph