【问题标题】:Java comparing strings [duplicate]Java比较字符串[重复]
【发布时间】:2013-04-05 07:40:36
【问题描述】:

我有一个小问题。我必须对具有相同大小的字符串列表和要比较的字符串进行比较。这意味着我想将字符串与第一个列表进行比较以获取列表中比较字符串的索引,然后从该索引上的另一个列表中获取另一个字符串。

private String getStringOnIndex(List<String> list1, List<String> list2,String elem) 
{
                String elem2;

        for (int i = 0; i<list1.size();i++) {

            if(list1.get(i).equals(elem)){
                elem2 = list2.get(i);
                return elem2;

            } else {
                return "nope";
            }
        }

}

这样比较两个字符串是不是错了。或者我应该使用运算符 ==。我知道字符串列表的样式并不好,但它只是一个临时解决方案。感谢任何帮助:)

【问题讨论】:

  • 另外,请注意以下行:list1.get(i).equals(elem) 可能导致 NullPointerException
  • 不回答这个问题,但你不能简单地做: - list2.get(list1.indexOf(elem)); 如果我知道这是你需要的吗?当然,你需要事先做测试,即list1.contains(elem);
  • @RohitJain:当然还有一些“未找到”的检查。
  • 你的循环条件不好,看我的回答......

标签: java string list


【解决方案1】:

要回答您关于“字符串比较”的具体问题,您所做的是正确的。字符串内容比较应使用equals() 完成。使用运算符== 只是检查引用的相等性,而不是内容。

对于您现在所做的工作,在我看来,这就像一个键值查找。您可以考虑重新设计,而不是存储 2 个列表,而是创建一个 Map&lt;String, String&gt;

【讨论】:

    【解决方案2】:

    Java 中的== 运算符比较对象引用,要比较字符串,您应该使用equals()

    【讨论】:

      【解决方案3】:
      if (list1.get(i).matches(elem))....
      

      【讨论】:

        【解决方案4】:

        总是使用equals 方法来比较两个字符串。如果要比较引用,请使用 == 运算符。这里的讨论可能有用How do I compare strings in Java?

        【讨论】:

          【解决方案5】:

          == 运算符仅在未实例化字符串变量 new 关键字时才能正常工作。 假设:

          String s1 = "abc";
          String s2 = "abc";
          

          然后s1==s2 工作正常。

          如果:

          String s1 = new String("abc");
          String s2 = new String("abc");
          

          那么你必须使用equals方法来比较值。

          最后,最好使用equals 方法来比较字符串值。

          【讨论】:

          • 另外:StringBuilder 创建的字符串也不会自动被实习。
          【解决方案6】:

          使用equals()方法比较对象的值,其中==操作符会比较对象的引用。

          【讨论】:

            【解决方案7】:

            问题不等于(即正确的方法),必须删除else表达式,否则将始终在第一次迭代时停止,解决方案:

            private String getStringOnIndex(List<String> list1, List<String> list2,String elem) 
            {
                String elem2;
            
                for (int i = 0; i<list1.size();i++) {
                    if(list1.get(i).equals(elem)){
                        elem2 = list2.get(i);
                        return elem2;
                    }
                }
                return "nope";
            
            }
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-07-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-06-19
              • 2011-10-19
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多