我有两个 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/