Java ArrayUtils.toPrimitive 我不能做 ArrayUtils.removeElement

标签 java mysql arrays arraylist casting

我需要将 mysql 数据库调用的结果用作 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;
}

对比:

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;
}

我没有检查代码的作用,只检查了有问题的部分,尽管那里可能还有其他问题。

关于Java ArrayUtils.toPrimitive 我不能做 ArrayUtils.removeElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21564377/

相关文章:

java - 从布局 XML 自动生成 'View' 类型的类字段的工具?

php - 上一个/下一个记录按钮 php/mysql 的问题

mysql - 我应该如何管理每小时插入和删除大量行的表?

arrays - 如何确保在 ios 测验应用程序中在 segue 期间不会重置数组数据?

java - 如何调用返回 tuple[] 的函数

java - hibernate删除操作优化

java - 可以在运行时为 @Schedule 注释更改 ejb 参数吗?

mysql - Sequelize 等效范围

javascript - 在 JS 中减慢 .push() 间隔

arrays - Azure CLI 列出具有关联公共(public) IP 的 VM