我有一个小问题。我必须使用相同大小的字符串列表和要比较的字符串。意思是我想比较字符串和第一个列表以获取列表中比较字符串的索引,然后从该索引上的另一个列表中获取另一个字符串。
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 :(得分:10)
要回答关于“字符串比较”的具体问题,您所做的是正确的。字符串内容比较应使用equals()
完成。使用运算符==
只检查引用的相等性,而不是内容。
对于您现在正在进行的工作,它看起来像是对我的键值查找。您可以考虑进行一些重新设计,而不是存储2个列表,而是制作Map<String, String>
答案 1 :(得分:1)
==
运算符会比较对象引用,以比较您应该使用equals()
的字符串。
答案 2 :(得分:1)
if (list1.get(i).matches(elem))....
答案 3 :(得分:1)
始终使用equals
方法来比较两个字符串。如果您要比较参考,请使用==
运算符。这里的讨论可能很有用How do I compare strings in Java?
答案 4 :(得分:0)
使用equals()方法比较对象的值,其中as == operator将比较对象引用。
答案 5 :(得分:0)
==
关键字时, new
运算符才能正常工作。
假设:
String s1 = "abc";
String s2 = "abc";
然后s1==s2
效果很好。
如果:
String s1 = new String("abc");
String s2 = new String("abc");
然后您必须使用equals
方法来比较值。
最后,使用equals
方法比较字符串值总是更好。
答案 6 :(得分: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";
}