将ArrayList传递给单独的类?

时间:2015-04-20 03:04:48

标签: java arraylist

我有一个从SQL数据库读取的代码,并将每列信息保存到ArrayList。我需要将每个ArrayList传递到一个单独的类中,我可以将列表存储为单个信息(IE:ArrayList1的第一部分中的信息与{{1}的第一部分中的信息一致等等...)然后对它们进行排序。我不知道如何将这些信息传递给另一个班级。这是我的主要方法的一部分,它将信息存储到列表中。我需要将此信息传递给名为ArrayList2的单独类:

List.java

编辑:这只是我代码的一部分,我已经打开并关闭了连接,我只需要有关如何将ArrayList传递给另一个类进行排序的信息。

2 个答案:

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