RE:LAS LISTAS FUNCIONAN PERO....
Si tienes un array bidimensional, puedes hacer una lista de listas. Para acceder a la primera dimensión, recorres la primera lista, y para acceder a la segunda, la siguiente. Es decir, no almacenas el array bidimensional 'estirandolo' en una lista, sino con lista de listas. Asi, puedes incluso tener en unas 'filas' un tamaño y en otras otro. Además, el acceso no crece de forma proporcional al tamaño de la primera dimensión, y no se necesita mucho esfuerzo (de hecho ninguno) si quieres hacer más grande esa primera dimensión.
Espero haberme explicado!