java - 使用 String[][] 模拟 contains()

标签 java

我有两个 SQL 表。抓取 ResultSets 中的两个表后,我将它们存储在 String[][]s 中,按公共(public) id 列排序。这些表应包含相同的数据,但是一个表中的同一行可能与另一个表重复。为了检查是否每个 String[]表 A 中的数据在表 B 中至少存在一次,我需要构造一个有点高效的 contains() String[] 的 -esque 方法.

这是我到目前为止所拥有的,但我很困惑(也不确定是否有更有效的解决方案)。为其提供源表和目标表。需要每个 String[]在源表中并且(应该)遍历每个 String[]在目标表中找到源String[]的实例目标String[][]中的某个地方通过检查是否至少有一个 String[]与原来的String[]相匹配,逐个元素。谁能指出我正确的方向和/或填补空白?这不是家庭作业或任何作业,我正在重构一些代码并且正在犯严重的大脑放屁。谢谢!

    public boolean targetContainsSource(String[][] s, String[][] t) {
    boolean result = true;

    //For each String[] in String[][] s
    for (int i = 0; i < s.length; i++) {

        //For each String[] in String[][] t
        for (int j = 0; j < t.length; j++) {

            //For each String in t's String[]
            for (int k = 0; k < t[0].length; k++) {
                if (!s[i][k].equals(t[j][k])) {

                }
            }
        }
    }

    return result;
}

最佳答案

可以使用Arrays.equals()删除最里面的循环.

对于第一个数组的每个元素,您应该定义一个 found boolean 变量,只有在第二个数组中找到该元素后,该变量才会设置为 true。一旦第二个循环完成,如果这个变量仍然为 false,则说明您找到了第一个数组中不在第二个数组中的元素,可以立即返回。

当然,一旦将此变量设置为 true,您就可以跳出第二个循环。

关于java - 使用 String[][] 模拟 contains(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10887411/

相关文章:

java - 有没有办法在 Java 中只读取 JSON 文件的一部分?

java - 如何强制 jTable 不可编辑?

java - Axis2 客户端的最小类路径是什么?

java - OWLApi 访客模式 : get superClass axiom

java - java中在静态 block 内和静态 block 外声明的静态变量之间的区别

java - 集合中的搜索/查询 (Java)

java - Java 中使用 float 作为守卫的奇怪输出

java - 使用for循环在第三个arraylist中添加arraylist的公共(public)元素时出现问题

java - 循环重绘组件

java - 使用 while 循环和 switch 语句进行扫描