我的java生锈了,我想知道是否有人可以给我一个如何执行以下操作的代码示例:
我有一个数据库调用的结果集,它返回下表:
object_id(int),marker_id(int),xpos(float),ypos(float)
结果按object_id分组,以便你有这样的东西:
1023, 19, 0.2, 0.8
1023, 63, 0.2, 0.9
1023, 63, 0.2, 0.9
1072, 63, 0.2, 0.23
1072, 63, 0.2, 0.9
1072, 63, 0.2, 0.6
1012, 63, 0.2, 0.6
1012, 63, 0.2, 0.6
我一直在寻找生成两个2d双数组的最有效方法
第一个
double[][] array1 = {
{0.2,0.8,0.2,0.9...},
{0.2,0.8,0.2,0.9...},
...}
每个子数组包含row1,row2等的序列x1,y1,x2,y2,x3,y3,用于结果集中对应的object_id。
第二个2d数组将包含:
double[][] array2 = {
{1.0},
{0.9},
{0.8},
...
{0.0}}
每个唯一object_id都有一个条目,第一个条目有1.0,最后一个条目有0.0
两个数组应该具有相同的长度,因为每个条目代表一个object_id
希望有意义
由于
答案 0 :(得分:0)
以下编辑的答案
“我需要将其转换为数组以输入到另一个库.-- user257543”
为了做到这一点,一种方法是将列转换为数组,然后根据需要组合它们。
//get the size of the ResultSet
myResultSet.last();
int resultSetSize = myResultSet.getRow();
//initialize your arrays to be joined
int[] array1 = new int[resultSetSize];
int[] array2 = new int[resultSetSize];
//loop through the result so array1 will be the same as column1 of your table, etc.
int count = 0;
myResultSet.beforeFirst();
while (myResultSet.next()){
array1[count] = myResultSet.getInt("my column 1");
array2[count] = myResultSet.getInt("my column 2");
count++;
}
//declare rows and columns for easy code readability
int row = 0;
int column = 2;
//set your combined array row and column lengths
int[][] aCombined = new int[array1.length][column];
//reset your column value to put array1 down column 0
column = 0;
for (int tempInt : array1){
aCombined[row][column] = tempInt;
row++;
}
//reset your row and go to the next column to do the same as above
row = 0;
column = 1;
for (int tempInt : array2){
aCombined[row][column] = tempInt;
row++;
}
使用上面的代码,如果您的原始数组是: int [] array1 = {1,2,3,4}; int [] array2 = {5,6,7,8}; aCombined然后会导致[[1,5],[2,6],[3,7],[4,8]]
可以将其视为
[column1 / array1,column2 / array2]
[1,5]
[2,6]
[3,7]
[4,8]
下面的原始答案
为什么需要将其转换为数组?为什么不直接使用结果集呢?
例如,如果你需要获取object_id为1072的所有对象的marker_id,只需:
public ArrayList getMarkerID(int objectId){
ArrayList<int> myArrayList = new ArrayList<>();
myResultSet.beforeFirst();
while (myResultSet.next()){
if (myResultSet.getInt("object_id") == objectId){
myArrayList.add(myResultSet.getInt("marker_id"));
}
}
return myArrayList;
}
(我只是快速输入它,并没有测试它,所以我可能会丢失一个分号或逻辑可能会稍微偏离)