Java 二维数组列表
我听说过使用这样的二维数组:Java 二维数组列表,java,Java,我听说过使用这样的二维数组: String[][] strArr; 但是有没有办法通过列表来实现这一点呢 也许是这样的 ArrayList<String><String> strList; 有没有办法做这样的事?谢谢你的帮助 如果有,那就好了,因为我目前正在成对地将字符串放入两个不同的ArrayList中。您将使用 List<List<String>> listOfLists = new ArrayList<List<String&
String[][] strArr;
但是有没有办法通过列表来实现这一点呢
也许是这样的
ArrayList<String><String> strList;
有没有办法做这样的事?谢谢你的帮助
如果有,那就好了,因为我目前正在成对地将字符串放入两个不同的ArrayList中。您将使用
List<List<String>> listOfLists = new ArrayList<List<String>>();
listOfLists=newarraylist();
然后,当您需要添加新的“行”时,您需要添加以下列表:
listOfLists.add(new ArrayList<String>());
添加(新的ArrayList());
当我想在GUI中保存对多个点列表的引用以便可以绘制多条曲线时,我经常使用这个方法。它工作得很好
例如:
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();
}
});
}
}
import java.awt.BasicStroke;
导入java.awt.Color;
导入java.awt.Dimension;
导入java.awt.Graphics;
导入java.awt.Graphics2D;
导入java.awt.Point;
导入java.awt.RenderingHints;
导入java.awt.Stroke;
导入java.awt.event.MouseAdapter;
导入java.awt.event.MouseEvent;
导入java.util.ArrayList;
导入java.util.List;
导入javax.swing.*;
@抑制警告(“串行”)
公共类DrawStuff扩展了JPanel{
专用静态最终整型预加值W=400;
私有静态final int PREF_H=PREF_W;
专用静态最终色点\u Color=Color.red;
私有静态最终颜色当前\u点\u颜色=Color.blue;
专用静态最终冲程=新基本冲程(4f);
私有列表点列表=新的ArrayList();
私有列表currentPointList=null;
公众支取{
MyMouseAdapter MyMouseAdapter=新的MyMouseAdapter();
addMouseListener(myMouseAdapter);
addMouseMotionListener(myMouseAdapter);
}
@凌驾
公共维度getPreferredSize(){
返回新维度(PREF_W,PREF_H);
}
@凌驾
受保护组件(图形g){
超级组件(g);
图形2d g2=(图形2d)g;
g2.setRenderingHint(RenderingHints.KEY_抗锯齿,
RenderingHints.VALUE_ANTIALIAS_ON);
g2.设定行程(行程);
g、 设置颜色(点颜色);
对于(列表点列表:点列表){
if(pointList.size()>1){
点p1=点列表。获取(0);
对于(int i=1;i1){
点p1=currentPointList.get(0);
对于(int i=1;i
二维数组就是数组的数组。列表的模拟就是List
s的List
ArrayList<ArrayList<String>> myList = new ArrayList<ArrayList<String>>();
ArrayList myList=new ArrayList();
我承认,这不是一个很好的解决方案,特别是如果你选择3维或更高维的结构。如果你的平台矩阵支持Java 7,那么你可以使用下面的方法
List<List<String>> myList = new ArrayList<>();
List myList=new ArrayList();
您可以创建一个列表
ArrayList<String[]> outerArr = new ArrayList<String[]>();
现在您可以使用下面的双循环来显示所有列表中的所有内容
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");
}
用于(int i=0;i事实上,二维数组是X
的列表,其中X
是从典型到用户定义的数据结构之一。作为以下快照代码,我将一行一行添加到数组三角形
。要创建每一行,我使用添加的方法手动添加元素或使用me方法asList
从一组数据创建一个列表
package algorithms;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class RunDemo {
/**
* @param args
*/
public static void main(String[] args) {
// Get n
List<List<Integer>> triangle = new ArrayList<List<Integer>>();
List<Integer> row1 = new ArrayList<Integer>(1);
row1.add(2);
triangle.add(row1);
List<Integer> row2 = new ArrayList<Integer>(2);
row2.add(3);row2.add(4);
triangle.add(row2);
triangle.add(Arrays.asList(6,5,7));
triangle.add(Arrays.asList(4,1,8,3));
System.out.println("Size = "+ triangle.size());
for (int i=0; i<triangle.size();i++)
System.out.println(triangle.get(i));
}
}
下面介绍如何使用ArrayList对象制作和打印二维多维数组
import java.util.ArrayList;
public class TwoD_ArrayListExample {
static public ArrayList<ArrayList<String>> gameBoard = new ArrayList<ArrayList<String>>();
public static void main(String[] args) {
insertObjects();
printTable(gameBoard);
}
public static void insertObjects() {
for (int rowNum = 0; rowNum != 8; rowNum++) {
ArrayList<String> oneRow = new ArrayList<String>();
gameBoard.add(rowNum, oneRow);
for (int columnNum = 0; columnNum != 8; columnNum++) {
String description= "Description of Objects: row= "+ rowNum + ", column= "+ columnNum;
oneRow.add(columnNum, description);
}
}
}
// The printTable method prints the table to the console
private static void printTable(ArrayList<ArrayList<String>> table) {
for (int row = 0; row != 8; row++) {
for (int col = 0; col != 8; col++) {
System.out.println("Printing: row= "+ row+ ", column= "+ col);
System.out.println(table.get(row).get(col).toString());
}
}
System.out.println("\n");
}
}
import java.util.ArrayList;
公共类TwoD_ArrayListExample{
静态公共ArrayList gameBoard=新ArrayList();
公共静态void main(字符串[]args){
插入对象();
打印台(游戏板);
}
公共静态void insertObjects(){
for(int-rowNum=0;rowNum!=8;rowNum++){
ArrayList oneRow=新的ArrayList();
gameBoard.add(rowNum,oneRow);
for(int columnNum=0;columnNum!=8;columnNum++){
String description=“对象描述:row=“+rowNum+”,column=“+columnNum;
oneRow.add(columnNum,description);
}
}
}
//printTable方法将表打印到控制台
私有静态void打印表(ArrayList表){
for(int行=0;行!=8;行++){
for(int col=0;col!=8;col++){
package algorithms;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class RunDemo {
/**
* @param args
*/
public static void main(String[] args) {
// Get n
List<List<Integer>> triangle = new ArrayList<List<Integer>>();
List<Integer> row1 = new ArrayList<Integer>(1);
row1.add(2);
triangle.add(row1);
List<Integer> row2 = new ArrayList<Integer>(2);
row2.add(3);row2.add(4);
triangle.add(row2);
triangle.add(Arrays.asList(6,5,7));
triangle.add(Arrays.asList(4,1,8,3));
System.out.println("Size = "+ triangle.size());
for (int i=0; i<triangle.size();i++)
System.out.println(triangle.get(i));
}
}
Size = 4
[2]
[3, 4]
[6, 5, 7]
[4, 1, 8, 3]
import java.util.ArrayList;
public class TwoD_ArrayListExample {
static public ArrayList<ArrayList<String>> gameBoard = new ArrayList<ArrayList<String>>();
public static void main(String[] args) {
insertObjects();
printTable(gameBoard);
}
public static void insertObjects() {
for (int rowNum = 0; rowNum != 8; rowNum++) {
ArrayList<String> oneRow = new ArrayList<String>();
gameBoard.add(rowNum, oneRow);
for (int columnNum = 0; columnNum != 8; columnNum++) {
String description= "Description of Objects: row= "+ rowNum + ", column= "+ columnNum;
oneRow.add(columnNum, description);
}
}
}
// The printTable method prints the table to the console
private static void printTable(ArrayList<ArrayList<String>> table) {
for (int row = 0; row != 8; row++) {
for (int col = 0; col != 8; col++) {
System.out.println("Printing: row= "+ row+ ", column= "+ col);
System.out.println(table.get(row).get(col).toString());
}
}
System.out.println("\n");
}
}
package my2darraylist;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JPanel;
public class My2DArrayList
{
public static void main(String[] args)
{
// This is your "2D" ArrayList
//
List<Box> boxes = new ArrayList<>();
// Add your stuff
//
Box stuff = new Box();
stuff.setAString( "This is my stuff");
stuff.addString("My Stuff 01");
stuff.addInteger( 1 );
boxes.add( stuff );
// Add other stuff
//
Box otherStuff = new Box();
otherStuff.setAString( "This is my other stuff");
otherStuff.addString("My Other Stuff 01");
otherStuff.addInteger( 1 );
otherStuff.addString("My Other Stuff 02");
otherStuff.addInteger( 2 );
boxes.add( otherStuff );
// List the whole thing
for ( Box box : boxes)
{
System.out.println( box.getAString() );
System.out.println( box.getMyStrings().size() );
System.out.println( box.getMyIntegers().size() );
}
}
}
class Box
{
// Each attribute is a "Column" in you array
//
private String aString;
private List<String> myStrings = new ArrayList<>() ;
private List<Integer> myIntegers = new ArrayList<>();
// Use your imagination...
//
private JPanel jpanel;
public void addString( String s )
{
myStrings.add( s );
}
public void addInteger( int i )
{
myIntegers.add( i );
}
// Getters & Setters
public String getAString()
{
return aString;
}
public void setAString(String aString)
{
this.aString = aString;
}
public List<String> getMyStrings()
{
return myStrings;
}
public void setMyStrings(List<String> myStrings)
{
this.myStrings = myStrings;
}
public List<Integer> getMyIntegers()
{
return myIntegers;
}
public void setMyIntegers(List<Integer> myIntegers)
{
this.myIntegers = myIntegers;
}
public JPanel getJpanel()
{
return jpanel;
}
public void setJpanel(JPanel jpanel)
{
this.jpanel = jpanel;
}
}
import java.util.ArrayList;
public class My2DArrayListSimplified
{
public static void main(String[] args)
{
ArrayList<Row> rows = new ArrayList<>();
Row row;
// Insert the columns for each row
// First Name, Last Name, Age
row = new Row("John", "Doe", 30);
rows.add(row);
row = new Row("Jane", "Doe", 29);
rows.add(row);
row = new Row("Mary", "Doe", 1);
rows.add(row);
// Show the Array
//
System.out.println("First\t Last\tAge");
System.out.println("----------------------");
for (Row printRow : rows)
{
System.out.println(
printRow.getFirstName() + "\t " +
printRow.getLastName() + "\t" +
printRow.getAge());
}
}
}
class Row
{
// REMEMBER: each attribute is a column
//
private final String firstName;
private final String lastName;
private final int age;
public Row(String firstName, String lastName, int age)
{
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
public String getFirstName()
{
return firstName;
}
public String getLastName()
{
return lastName;
}
public int getAge()
{
return age;
}
}
run:
First Last Age
----------------------
John Doe 30
Jane Doe 29
Mary Doe 1
BUILD SUCCESSFUL (total time: 0 seconds)
for (Project project : listOfLists) {
String nama_project = project.getNama_project();
if (project.getModelproject().size() > 1) {
for (int i = 1; i < project.getModelproject().size(); i++) {
DataModel model = project.getModelproject().get(i);
int id_laporan = model.getId();
String detail_pekerjaan = model.getAlamat();
}
}
}
ArrayList<ArrayList<String>> rows = new ArrayList<String>();
ArrayList<ArrayList<String>> rows = new ArrayList<>();
ArrayList<ArrayList<String>> rows = new ArrayList<ArrayList<String>>();
ArrayList<String> row = new ArrayList<>();
for(int i=0; i<5; i++){
ArrayList<String> row = new ArrayList<>();
for(int j=0; j<5; j++){
row.add("Add values here");
}
rows.add(row);
}
for(int i=0; i<5; i++){
for(int j=0; j<5; j++){
System.out.print(rows.get(i).get(j)+" ");
}
System.out.println("");
}