0

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

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

}

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

4

7 回答 7

10

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

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

于 2013-04-05T07:43:53.840 回答
1

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

于 2013-04-05T07:42:42.193 回答
1
if (list1.get(i).matches(elem))....
于 2013-04-05T07:44:05.107 回答
1

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

于 2013-04-05T07:50:28.570 回答
0

使用 equals() 方法比较对象的值,其中 == 运算符将比较对象引用。

于 2013-04-05T07:46:00.393 回答
0

==仅当 String 变量不是实例化new关键字时,运算符才能正常工作。认为:

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

然后s1==s2效果很好。

如果:

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

然后你必须使用equals方法来比较这些值。

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

于 2013-04-05T07:51:02.963 回答
0

问题不等于(这是正确的方法),您必须删除 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";

}
于 2013-04-05T08:04:13.010 回答