如何从java中的方法返回List <long>值并将其放入新列表?

时间:2016-07-22 12:39:54

标签: java

我在一个java类中有一个方法,SELECT一个来自我数据库的表中的一个,并且该列是数据库中的INT类型,然后我从该coloumn中选择项目,将它放在List中并返回此List。这是方法:

 public List<Long> vratiSveSifreRacuna() throws SQLException {
        String sqlVratiSifruRacuna = "SELECT RacunID FROM racun";

        Statement stat = konekcija.createStatement();
        ResultSet  rs  = stat.executeQuery(sqlVratiSifruRacuna);

        Long racunID = 0L;
        List<Long> sifre = new ArrayList<Long>();

        while (rs.next()){
          racunID = rs.getLong("RacunID");
          sifre.add(racunID);
        }
        return sifre;
    }

现在,如何从此方法返回列表并放入另一个列表? 当我尝试这样做时,它不起作用......就像它看到返回的列表为空或者其他东西...... 为什么会这样?这个方法好吗?  我想有一个方法,从数据库表中返回一个完整的coloumn作为List,然后我想以某种方式使用这个List ...

3 个答案:

答案 0 :(得分:1)

正如您所说,您的数据库中有一个INT值,并且您正在使用getLong()来尝试获取INT值,这可能是它无法正常工作的原因。

尝试使用此代码:

while (rs.next()){
      racunID = (Long) rs.getInt("RacunID");
      sifre.add(racunID);
}
    return sifre;

编辑1(简体):

while (rs.next()){
      sifre.add(new Long(rs.getInt("RacunID")));
}
    return sifre;

答案 1 :(得分:0)

您甚至不需要添加到新列表,只需在参数中传递原始列表:

public void vratiSveSifreRacuna(List<Long> passedList) throws SQLException {
    String sqlVratiSifruRacuna = "SELECT RacunID FROM racun";

    Statement stat = konekcija.createStatement();
    ResultSet  rs  = stat.executeQuery(sqlVratiSifruRacuna);

    Long racunID = 0L;
    List<Long> sifre = passedList;

    while (rs.next()){
      racunID = rs.getInt("RacunID"); //column is int, it will automatically upcast to long don't worry about that
      sifre.add(racunID);
    }

    //set sifre to null now to let it get garbage collected :)
    sifre=null
}

现在调用方法如下:

yourclassreference.vratiSveSifreRacuna(yourListLong);

答案 2 :(得分:0)

保持你的方法不变(应避免对参数产生副作用)。

调用方法,存储结果,然后将其添加到您要完成的其他列表中。

List<Long> foo = ...; // i don't know where it comes from
List<Long> bar = vratiSveSifreRacuna();
foo.addAll(bar);

请参阅java.util.List#addAll API