You would use
List<List<String>> listOfLists = new ArrayList<List<String>>();
And then when you needed to add a new “row”, you’d add the list:
listOfLists.add(new ArrayList<String>());
I’ve used this mostly when I wanted to hold references to several lists of Point in a GUI so I could draw multiple curves. It works well.
For example:
import java.awt.BasicStroke; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.RenderingHints; import java.awt.Stroke; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.List; import javax.swing.*; @SuppressWarnings("serial") public class DrawStuff extends JPanel { private static final int PREF_W = 400; private static final int PREF_H = PREF_W; private static final Color POINTS_COLOR = Color.red; private static final Color CURRENT_POINTS_COLOR = Color.blue; private static final Stroke STROKE = new BasicStroke(4f); private List<List<Point>> pointsList = new ArrayList<List<Point>>(); private List<Point> currentPointList = null; public DrawStuff() { MyMouseAdapter myMouseAdapter = new MyMouseAdapter(); addMouseListener(myMouseAdapter); addMouseMotionListener(myMouseAdapter); } @Override public Dimension getPreferredSize() { return new Dimension(PREF_W, PREF_H); }