如何在Java中创建2D ArrayList?

如何在Java中创建2D ArrayList?,java,jdbc,resultset,Java,Jdbc,Resultset,我正在使用java创建一个基本的SQL编辑器,我想知道如何创建一个2d数组,将每个“Persons”数据存储在一个arraylist中。我有一个名为contactdetails的数据库,其中存储了每个人的联系ID、全名、电子邮件、电话号码等。我只是想看看是否有人可以在评论中输入一些代码,告诉我如何处理这个问题?以下是我用于从数据库检索的当前代码: public void SELECTALL() { db.Connnect(); Connection conn = db.getCo

我正在使用java创建一个基本的SQL编辑器,我想知道如何创建一个2d数组,将每个“Persons”数据存储在一个arraylist中。我有一个名为contactdetails的数据库,其中存储了每个人的联系ID、全名、电子邮件、电话号码等。我只是想看看是否有人可以在评论中输入一些代码,告诉我如何处理这个问题?以下是我用于从数据库检索的当前代码:

public void SELECTALL() {
    db.Connnect();
    Connection conn = db.getConnection();
    if (conn!=null) {
        try {
            String SQL = "SELECT * FROM (?);";
            PreparedStatement stmt = conn.prepareStatement(SQL);
            //Gathering which table the user wants to view
            Scanner s = new Scanner(System.in);
            System.out.println("Enter name of table");
            String TABLENAME = s.nextLine();
            //Inserting table name into SQL command
            stmt.setString(0, TABLENAME);
            //Executing query
            ResultSet rs = stmt.executeQuery();
            //Displating data to user
            while (rs.next()) {
                //DATA GETS STORED IN 2D ARRAY SO EACH PERSON GETS OWN PERSONAL INTEGER TO BE CALLED BY E.G soandso.get(4) 
            }
        } catch (SQLException err) {
            System.err.println(err);
        }
            
    }
}
谢谢大家。任何反馈都很好。

列表和人员类别 我绝对建议创建一个
Person
类来存储与Person的一个实例相关的所有数据。此类将包括此人的联系人ID、全名、电子邮件、电话号码等。类似的内容将起作用,尽管您希望将字段设置为私有字段,并最终为其设置getter/setter:

public class Person {
    public int id;
    public String name;
    public String email;
    public String phoneNumber;
}
然后,在获取结果时,可以创建
Person
类的新实例,并将所有Person详细信息存储在那里。然后,您可以将所有
Person
实例存储在
列表中,如下所示:

public void SELECTALL() {
    List<Person> persons = new ArrayList<Person>();
    ...

    while (rs.next()) {
        Person person = new Person();
        person.id = rs.getInt("idColumn");
        person.name = rs.getString("nameColumn");
        ...

        persons.add(person);
    }
}
这将获得人员列表中第一个名为“John”的
人员
实例。如果不存在具有该名称的人员,它将返回null

二维阵列列表 但如果您确实坚持使用2D ArrayList,您可以这样做:

Person john = persons.stream()
                     .filter(person -> person.name.equals("John"))
                     .findFirst()
                     .orElse(null);
public void SELECTALL() {
    List<List<String>> persons = new ArrayList<List<String>>();
    ...

    while (rs.next()) {
        List<String> personData = new ArrayList<String>();
        personData.add(rs.getString("idColumn"));
        personData.add(rs.getString("nameColumn"));
        ...

        persons.add(personData);
    }
}
public void SELECTALL() {
    Map<Integer, List<String>> persons = new HashMap<Integer, List<String>>();
    ...

    while (rs.next()) {
        List<String> personData = new ArrayList<String>();
        int key = rs.getInt("idColumn");
        personData.add(rs.getString("nameColumn"));
        ...

        persons.put(key, personData);
    }
}
然后,您可以通过执行以下操作获取人员数据的
列表

List<String> person = persons.get(key);
List person=persons.get(键);

这是否回答了您的问题?您是否尝试编译并运行代码?