我需要将mysql DB调用中的结果用作INT数组。问题是,当我通过IntegerList通过ResultSet检索数据,然后使用“ ArrayUtils.toPrimitive”时,我无法执行ArrayUtils.removeElement。
但是,如果我只是创建一个数组,那么我可以删除元素。
这是我的意思:
List<Integer> rowValues = new ArrayList<>();
String MySqlResultStr;
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
int gematria = rs.getInt("gematria");
rowValues.add(rs.getInt(1));
}
int[] GematriaIntArray = ArrayUtils.toPrimitive(rowValues.toArray(new Integer[0]));
System.out.println("Contents Pre: " + GematriaIntArray.length);
GematriaIntArray = ArrayUtils.removeElement(GematriaIntArray, 1);
System.out.println("Contents Pst: " + GematriaIntArray.length);
int GematriaIntArraySize = GematriaIntArray.length;
int GematriaIntTempArraySize = GematriaIntArray.length;;
int GematriaSum = 0;
int PerekIndent = 0;
for (int i = 1; i < (GematriaIntArraySize +1); i++)
{
for (int j = 0; j < GematriaIntTempArraySize; j++)
{
GematriaSum = GematriaSum + GematriaIntArray[j];
System.out.println(GematriaSum + "," + (i+PerekIndent) + "," + (i+j+PerekIndent));
}
GematriaSum = 0;
//--The line below does not work!
GematriaIntArray = ArrayUtils.removeElement(GematriaIntArray, i);
GematriaIntTempArraySize = GematriaIntArray.length;
}
vs:
int[] GematriaIntArray = {1,2,3,4,5};
System.out.println("Contents Pre: " + GematriaIntArray.length);
GematriaIntArray = ArrayUtils.removeElement(GematriaIntArray, 1);
System.out.println("Contents Pst: " + GematriaIntArray.length);
最佳答案
您正在索引数组之外。假设您有一个包含单个元素的数组(我将使用小写的变量名):
for (int i = 1; i < (gematriaIntArraySize +1); i++)
{
//omitted some code
//--The line below does not work!
gematriaIntArray = ArrayUtils.removeElement(gematriaIntArray, i);
}
您要ArrayUtils从数组中删除元素
1
,尽管它只有一个元素。使用ArrayUtils.removeElement(gematriaIntArray, i - 1)
并在每次迭代中计算数组的长度。遵循以下原则:for (int i = 1; i < (gematriaIntArray.length +1); i++)
{
for (int j = 0; j < gematriaIntTempArraySize; j++)
{
gematriaSum = gematriaSum + gematriaIntArray[j];
System.out.println(gematriaSum + "," + (i+perekIndent) + "," + (i+j+perekIndent));
}
gematriaSum = 0;
gematriaIntArray = ArrayUtils.removeElement(gematriaIntArray, i - 1);
gematriaIntTempArraySize = gematriaIntArray.length;
}
我还没有检查代码的功能,只是有问题的部分,尽管那里也可能有其他问题。