我有一个从SQL
数据库读取的代码,并将每列信息保存到ArrayList
。我需要将每个ArrayList
传递到一个单独的类中,我可以将列表存储为单个信息(IE:ArrayList1
的第一部分中的信息与{{1}的第一部分中的信息一致等等...)然后对它们进行排序。我不知道如何将这些信息传递给另一个班级。这是我的主要方法的一部分,它将信息存储到列表中。我需要将此信息传递给名为ArrayList2
的单独类:
List.java
编辑:这只是我代码的一部分,我已经打开并关闭了连接,我只需要有关如何将ArrayList传递给另一个类进行排序的信息。
答案 0 :(得分:8)
在您的其他类中创建一个方法,如下所示:
public void receiveList (ArrayList<String> invoiceIDList) {
// Do something with invoiceIDList data
}
在&#34; List&#34;中创建构造函数可能不是一个坏主意。 class,接受ArrayList并使用所需数据创建类实例
此外,请更改该课程的名称!!阅读代码的其他人会感到困惑,因为你已经传递了一个ArrayList!
修改强>
您也可以让您的类实现 List接口,这将使您更容易,因为您可以根据ArrayList中数据的位置将数据插入到您的类中。
public class yourClass implements List<String> {
// Your class methods and variables...
}
如果你想扩展这个以允许不仅仅是字符串,你可以改为:List<T>
,这将为你提供更通用的方法。
答案 1 :(得分:5)
首先,我建议您执行SELECT COUNT()
而不是在第一个查询中迭代行。然后记住close()
和PreparedStatement
ResultSet
。最后,我建议你编程到List<String>
界面。把它们放在一起就像,
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
连接到您的数据库并初始化conn
。
int count = 0;
try {
String query1 = "SELECT COUNT(InvoiceID) FROM Invoice;";
ps = conn.prepareStatement(query1);
rs = ps.executeQuery();
if (rs.next()) {
count = rs.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
rs.close();
} catch (Exception ignored) {
}
try {
ps.close();
} catch (Exception ignored) {
}
}
上述代码块对于close()
和rs
ps
以及the finally
Block的正确顺序是必要的。
List<String> invoiceIdList = new ArrayList<>();
try {
String query2 = "SELECT InvoiceID FROM Invoice;";
ps = conn.prepareStatement(query2);
rs = ps.executeQuery();
while (rs.next()) {
invoiceIdList.add(rs.getString("InvoiceID"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally { // <-- it's identical to the finally block above.
try {
rs.close();
} catch (Exception ignored) {
}
try {
ps.close();
} catch (Exception ignored) {
}
}
// now you can pass invoiceIdList elsewhere...
if (!invoiceIdList.isEmpty()) {
doSomething(invoiceIdList);
}