I've heard of using a two dimensional array like this :
String[][] strArr;
But is there any way of doing this with a list?
Maybe something like this?
ArrayList<String><String> strList;
And using something like this to add to it?
strList.add("hey", "hey");
Any way of doing something like this? Any help appreciated.
It would be good if there is because i am currently putting strings into two differrent ArrayList's in pairs.
The most common and the simplest form of Multidimensional Array Lists used is 2-D Array Lists.
A two-dimensional list can be considered as a “list of lists”. A two-dimensional list can be considered as a matrix where each row can have different lengths and supports different data types.
Example: int A[10][20]; Here we declare a two-dimensional array in C, named A which has 10 rows and 20 columns.
Arrays can be created in 1D or 2D. 1D arrays are just one row of values, while 2D arrays contain a grid of values that has several rows/columns. 1D: 2D: An ArrayList is just like a 1D Array except it's length is unbounded and you can add as many elements as you need.
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); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setStroke(STROKE); g.setColor(POINTS_COLOR); for (List<Point> pointList : pointsList) { if (pointList.size() > 1) { Point p1 = pointList.get(0); for (int i = 1; i < pointList.size(); i++) { Point p2 = pointList.get(i); int x1 = p1.x; int y1 = p1.y; int x2 = p2.x; int y2 = p2.y; g.drawLine(x1, y1, x2, y2); p1 = p2; } } } g.setColor(CURRENT_POINTS_COLOR); if (currentPointList != null && currentPointList.size() > 1) { Point p1 = currentPointList.get(0); for (int i = 1; i < currentPointList.size(); i++) { Point p2 = currentPointList.get(i); int x1 = p1.x; int y1 = p1.y; int x2 = p2.x; int y2 = p2.y; g.drawLine(x1, y1, x2, y2); p1 = p2; } } } private class MyMouseAdapter extends MouseAdapter { @Override public void mousePressed(MouseEvent mEvt) { currentPointList = new ArrayList<Point>(); currentPointList.add(mEvt.getPoint()); repaint(); } @Override public void mouseDragged(MouseEvent mEvt) { currentPointList.add(mEvt.getPoint()); repaint(); } @Override public void mouseReleased(MouseEvent mEvt) { currentPointList.add(mEvt.getPoint()); pointsList.add(currentPointList); currentPointList = null; repaint(); } } private static void createAndShowGui() { JFrame frame = new JFrame("DrawStuff"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(new DrawStuff()); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGui(); } }); } }
You can create a list,
ArrayList<String[]> outerArr = new ArrayList<String[]>();
and add other lists to it like so:
String[] myString1= {"hey","hey","hey","hey"}; outerArr .add(myString1); String[] myString2= {"you","you","you","you"}; outerArr .add(myString2);
Now you can use the double loop below to show everything inside all lists
for(int i=0;i<outerArr.size();i++){ String[] myString= new String[4]; myString=outerArr.get(i); for(int j=0;j<myString.length;j++){ System.out.print(myString[j]); } System.out.print("\n"); }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With