我正在使用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获取数据。因为我必须将这些值放在图表中。
答案 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
}