¿Cómo analizar correctamente el archivo CSV a 2d Array?

Estoy tratando de analizar un archivo csv en una matriz 2d, donde cada fila es una entrada de datos y cada columna es un campo en esa entrada.

Hacer esto de una vez simplifica y separa mi código de procesamiento de mi código de análisis.

Traté de escribir un analizador simple que usaraString.Split para separar el archivo por comas. Este es un enfoque horrible como he descubierto. No analiza completamente ningún caso especial como comillas dobles, avances de línea y otros caracteres especiales.

¿Cuál es la forma correcta de analizar un archivo CSV en una matriz 2D como he descrito?

Se apreciarán ejemplos de código en Java. La matriz puede ser un objeto o vector de lista dinámica o algo así, solo tiene que ser indexable con dos indexadores.

Respuestas a la pregunta(2)

Su respuesta a la pregunta