我将如何在Java中创建2D ArrayList?



我正在使用java创建一个基本的SQL编辑器,我想知道如何创建一个2d数组,将每个"Persons"数据存储在一个数组列表中。我有一个名为联系人详细信息的数据库,它存储每个人的联系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实例存储在一个List<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);
}
}

然后,如果需要,您可以最终返回整个List<Person>。要在填写List<Person>后获取特定的Person实例,您可以使用 Streams 筛选该列表,如下所示:

Person john = persons.stream()
.filter(person -> person.name.equals("John"))
.findFirst()
.orElse(null);

这将获得人员列表中第一个名称与"John"完全相同的Person实例。如果没有具有该名称的人存在,它将返回 null。

2D 数组列表

但是如果你真的坚持使用2D ArrayList,你可以做这样的事情:

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);
}
}

哈希地图

但是,如果你这样做,我建议尝试HashMap,让人 Id 成为HashMap的"钥匙",就像这样:

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>

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

相关内容

  • 没有找到相关文章

最新更新