Java 如何将二维字符串数组减少一行?

Java 如何将二维字符串数组减少一行?,java,arrays,Java,Arrays,我有一个由MySQL数据库的结果集填充的2D字符串数组。我需要一种方法,每次匹配一个值时,将行数减少1。此进程将只运行一次/次操作 for(int i=0;i<editable.length;i++) { for(int j=0;j<editable[i].length;j++) { if(editable[i][1].equals(selection)) { while(!editable[i-1][j].eq

我有一个由MySQL数据库的结果集填充的2D字符串数组。我需要一种方法,每次匹配一个值时,将行数减少1。此进程将只运行一次/次操作

for(int i=0;i<editable.length;i++)
{
    for(int j=0;j<editable[i].length;j++)
    {
        if(editable[i][1].equals(selection))
        {
            while(!editable[i-1][j].equals(selection))
            {
                editable= new String[i-1][j];
            }
        }
    }
}

for(int i=0;i我假设
username
是您的表列之一

如果您想“更改”数组,即删除一个条目,正如您可能知道的那样,Java在不创建新数组的情况下无法做到这一点。有一个类包装了此功能,称为
ArrayList
,如果您想从结果中“删除”行,您可能需要使用
列表而不是
字符串[]

如果您实际上对该行根本不感兴趣,您还可以在SQL语句中添加一个
WHERE
子句,以防止该行首先在
ResultSet
中返回。使用
将其设置为
PreparedStatement
“从用户名不喜欢的Java_测试_配置文件中选择*”
或任何适用于您情况的
条款

如果您经常通过
用户名
访问Java中的数据,那么您可能实际上需要使用
映射
,其中值是整行,键是用户名

您可以考虑使用<代码>类JavaTestPrrase<代码>(我实际上称之为数据结构,但在java中,它也是一个类),而不是<代码>字符串[]

表示行。您可能希望在持久层的帮助下自动生成该数据结构,甚至可能生成相应的SQL。您可以查看Spring和Hibernate之类的内容

附言:

table
对于语句来说是一个不好的变量名。
stmt
会更好。特别是考虑到您有
table
dbTable
,这更容易引起误解:
table
是查询,
dbTable
是Java中该查询的数据。这些名称表明它是另一个wa一轮又一轮

rowNumb
也是一个不好的变量名,因为它意味着行数,这通常是不明确的。最好使用
rowCount
。对于
,也可以使用
columnCount
。或者
numberOfRows
numberOfColumns
,但人们可以清楚地理解

p.p.S.: 条件
rowNumb()
中的<100
,而
是毫无意义的,因为
rowNumb
在循环过程中从未更新。它只是阻止循环在查询返回100行或更多行的情况下进行迭代。这可能是有意的,但是很难理解为什么要反复检查条件,而不是将其放入
if()
关于
while()

在对我的代码进行了大量编辑和“黑客”之后,我提出了以下解决方案:

String[][] tempTable=null;
int newArrayLength=editable.length-1;
Scanner scnInputst = new Scanner(System.in).useDelimiter("\\n");
String selection = scnInputst.next();
tempTable = new String[newArrayLength][9];

for(int rowCounter=0;rowCounter<newArrayLength;rowCounter++)
{
    if(!editable[rowCounter][1].equals(selection.trim())
    {
        temptable[newRows]=editable[rowCounter];
        newRows++;
    }
}
String[][]tentable=null;
int newArrayLength=editable.length-1;
Scanner scnInputst=新扫描仪(System.in).useDelimiter(\\n”);
字符串选择=scnInputst.next();
诱惑=新字符串[newArrayLength][9];

对于(int rowCounter=0;rowCounter)您的问题是什么?是不是:“有什么方法可以那么答案几乎总是肯定的。@Kon我想这个标题很好地概括了我的问题?要是这么简单就好了。在我工作的地方,每当我提到Spring或Hibernate时,他们的反应都很糟糕,或者这不是问题。不过谢谢你的回答!