从java中的arraylist中检索多个值

时间:2014-02-13 13:11:36

标签: java sqlite

我正在使用ArrayList来存储数据库中的时间,出价和ASK值。而且我无法像数据库那样以行方式访问Arraylist中的数据。我怎么能这样做。

以下是代码: -

List<String> graphData=new ArrayList<String>();
 stmt = c.createStatement();
                rs = stmt.executeQuery( "SELECT TIME,BID,ASK FROM '"+title+"' ;" );
                System.out.println("Opened database successfully 20");
                List<Double> buyMap=new ArrayList<Double>();
                double buy_avg=0.0, bid=0.0,   temp_profit, cum_prof=0;
                while(rs.next()){
                     i++;
                    graphData.add(rs.getString(1));
                    graphData.add(df.format(rs.getFloat(2)));
                    graphData.add(df.format(rs.getFloat(3)));
                }

现在我如何从graphData获取数据。因为我必须将这些值放在图表中。

5 个答案:

答案 0 :(得分:2)

啊,好主人只需创建一个Object

实施例

public class Buy {
    private String firstValue;
    private String secondValue;
    private String thirdValue;
}

然后使用数据库中的每一行创建一个新的Buy对象。

graphData.add(new Buy(rs.getString(1), df.format(rs.getFloat(2)), df.format(rs.getFloat(3)));

现在您可以以漂亮的方式访问它,而不是以ArrayList的增量跳过3

答案 1 :(得分:1)

你可以这样做:

for (int i=0; i<graphData.size(); i+=3){
   // get elem at i
   // get elem at i+1
   // get elem at i+2
}

但是我建议你创建一些bean / POJO对象并用它填充它 每个rs行的3个值。然后将bean对象添加到graphData

答案 2 :(得分:1)

如何使用列表清单?这样,每个列表都代表数据库中的一行:

List<List<String>> graphData=new ArrayList<List<String>>();
 stmt = c.createStatement();
                rs = stmt.executeQuery( "SELECT TIME,BID,ASK FROM '"+title+"' ;" );
                System.out.println("Opened database successfully 20");
                List<Double> buyMap=new ArrayList<Double>();
                double buy_avg=0.0, bid=0.0,   temp_profit, cum_prof=0;
                while(rs.next()){
                     i++;
                    List<String> row = new ArrayList<String>();
                    row.add(rs.getString(1));
                    row.add(df.format(rs.getFloat(2)));
                    row.add(df.format(rs.getFloat(3)));
                    graphData.add(row)
                }

要以类似方式访问数据(类似于它们在数据库中的存储方式),您可以这样做:

for(List<String> db : graphData)
{
    System.out.println("TIME: " + db.get(0) + " BID " + db.get(1) + " ASK " + db.get(2));
}

答案 3 :(得分:0)

您的代码:

 List<String> graphData=new ArrayList<String>();
   stmt = c.createStatement();
            rs = stmt.executeQuery( "SELECT TIME,BID,ASK FROM '"+title+"' ;" );
            System.out.println("Opened database successfully 20");
            List<Double> buyMap=new ArrayList<Double>();
            double buy_avg=0.0, bid=0.0,   temp_profit, cum_prof=0;
            while(rs.next()){
                 i++;
                graphData.add(rs.getString(1));
                graphData.add(df.format(rs.getFloat(2)));
                graphData.add(df.format(rs.getFloat(3)));
            }

从列表中检索数据:

  for (String string : graphData) {
   System.out.println(string); // prints the values of the list
  }

答案 4 :(得分:0)

为什么不创建一个类来保存数据?

public class MyData {
private String field1;
private String field2;
private String field3;
public MyData( String f1, String f2, String f3) {
field1=f1;
field2=f2;
field3=f3;
}

//添加getter     }

然后以这种方式读取数据:

List<MyData> graphData=new ArrayList<MyData>();
 stmt = c.createStatement();
                rs = stmt.executeQuery( "SELECT TIME,BID,ASK FROM '"+title+"' ;" );
                System.out.println("Opened database successfully 20");
                List<Double> buyMap=new ArrayList<Double>();
                double buy_avg=0.0, bid=0.0,   temp_profit, cum_prof=0;
                while(rs.next()){
                     i++;
                    graphData.add(new MyData( rs.getString(1), df.format(rs.getFloat(2)), df.format(rs.getFloat(3)));
                }

并以这种方式阅读:

for ( MyData data : graphData )
{
   // do something with data
}