Java比较字符串

问题描述:

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

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"; 
      } 
     } 

} 

比较两个字符串是否是错误的。或者我应该使用运算符==。我知道字符串列表的风格并不好,但它只是一个临时解决方案。 THX对于任何帮助:)

+0

另外要注意的是,线:列表1 .get(i).equals(elem)可能导致NullPointerException – 2013-04-05 07:44:07

+2

不回答这个问题,但不能简单地做到: - 'list2.get(list1.indexOf(elem));'如果我明白这是你需要?当然,你需要事先做测试,那'list1.contains(elem);' – 2013-04-05 07:44:31

+0

@RohitJain:加上一些检查“找不到”当然。 – 2013-04-05 07:45:26

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

对于你现在正在做的工作,它看起来像是我的键值查找。您可以考虑一些重新设计和,而不是存储2所列出,做一个Map<String, String>

==运营商的Java比较对象引用,比较字符串,你应该使用equals()

if (list1.get(i).matches(elem)).... 

使用equals()方法比较的对象,那里的==操作符会比较对象的参考价值。

总是使用equals方法来比较两个字符串。如果您正在比较参考,则使用==运算符。这里讨论可以是有用的How do I compare strings in Java?

==只有当字符串变量不是实例化的时候,操作符才能正常工作new关键字。 假设:

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

然后s1==s2做工不错。

如果:

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

则必须使用equals方法来比较值。

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

+0

Plus:StringBuilder创建的字符串也不会自动实现。 – TheBlastOne 2013-04-05 08:02:20

问题不等于(这是正确的方法),您必须删除其他的表情,如果不是你将在第一次迭代总是停下来,解决方案:

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"; 

}