gpt4 book ai didi

java - 为什么当 set 为 null 时 set1 也为 null?

转载 作者:行者123 更新时间:2023-12-01 14:51:46 26 4
gpt4 key购买 nike

在下面的代码片段中,我执行一个查询并将结果集传递给set。然后set被分配给set1。之后有一个 while 循环,一直持续到 set.next 返回 false。如果 set.next 在循环后返回 false,set1 也会返回 false 吗?

ResultSet set = statement.executeQuery();
ResultSet set1 = set;
while (set.next()) {
if (set.getString(1).equalsIgnoreCase(keyword)) {
// If the search matches the exact keyword
list.put(set.getString(2), set.getString(1));
// Where key is the name of the node and value is, name of the file
}
}

我问这个是因为:

while (set1.next()) {
System.out.println("@@@Inside the while statement@@@");
if (set1.getString(1).contains(keyword)
&& set1.getString(1).compareToIgnoreCase(keyword) !=0) {
// If the search contains the keyword but does not exactly match
list.put(set.getString(2), set.getString(1));
// Where key is the name of the node and value is, name of the file
System.out.println("@@@Inside the if statement of second while loop !@@@");
}
}

这个while结构永远不会起作用。是这个原因吗?如果是这样,我该怎么办?

最佳答案

您有两个主要错误:

  1. set 分配给 set1 不会进行复制 - 它是同一组
  2. String.contains() 区分大小写(您的代码与您的注释不匹配)

修复方法是:

  1. 不要使用两个循环 - 仅使用一个循环
  2. 使用 `toLowerCase()contains() 来实现“不区分大小写的 contains”测试
  3. 此外,如果您的第一个测试为真,那么您的第二个测试也是如此,因此您无论如何都不需要两个测试/循环

试试这个代码:

   ResultSet set = statement.executeQuery();
while(set.next()) {
if(set.getString(1).toLowerCase()
.contains(keyword.toLowerCase)) {
list.put(set.getString(2), set.getString(1));
}
}

此外,不要将 map 称为“列表” - 称为“ map ”,否则只会让代码的读者感到困惑。

关于java - 为什么当 set 为 null 时 set1 也为 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14778855/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com