Java比较字符串

Java比较字符串,java,string,list,Java,String,List,我有一个小问题。我必须使用相同大小的字符串列表和要比较的字符串。这意味着我要将该字符串与第一个列表进行比较,以获取列表中已比较字符串的索引,然后从该索引的另一个列表中获取另一个字符串 private String getStringOnIndex(List<String> list1, List<String> list2,String elem) { String elem2; for (int i = 0; i<

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

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获取任何帮助:

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

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


对于您现在正在做的工作,我觉得它像是一个键值查找。您可以考虑重新设计,而不是存储2个列表,制作一个map

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

总是使用等值方法来比较两个字符串。如果要比较引用,请使用==运算符。这里的讨论可能有用

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

那么s1==s2工作正常

如果:

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


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

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

}

另外,请注意:list1.geti.equalselem行可能会导致NullPointerException不回答问题,但您不能简单地这样做:-list2.getlist1.indexOfelem;如果我知道这是你需要的?当然,您需要事先进行测试,即list1.containselem@RohitJain:当然还有一些未找到的检查。你有一个糟糕的循环条件,请看我的答案……另外:StringBuilder创建的字符串也不会自动插入。
String s1 = "abc";
String s2 = "abc";
String s1 = new String("abc");
String s2 = new String("abc");
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";

}