【发布时间】:2016-02-24 01:46:36
【问题描述】:
我必须检查一个字符串列表,如果之前没有处理过这个字符串,那么我们对这个字符串做一些处理。对于他的问题,我在处理后将每个字符串添加到ArrayList<String>,并在处理之前检查该字符串是否存在于不存在的列表中。但是由于某种原因,尽管String存在于数组列表中,但它不起作用。
ArrayList<String> strings=new ArrayList<String>();
while(true) {
if(!strings.contains(someString)) {
System.out.println(someString);
strings.add(someString);
}
}
编辑
当我提到它不起作用时,我的意思是 if 条件应该为相似的字符串返回 false(因为它们相互包含),但是相反,它并没有这样做,然后程序进入 @ 987654324@ 声明。
输入:
http://www.foo.bar 和 http://www.foo.bar/ 和 http://www.foo.bar 等
输出:
应该只打印第一个 URL。
【问题讨论】:
-
“它不起作用”是什么意思?请准确描述您预期会发生什么,以及实际发生了什么。包括您遇到的任何异常/堆栈跟踪。
-
@ErwinBolwidt 它不起作用意味着对于相同或非常相似的字符串,它不会返回 false。所以它进入了不正确的
if语句。 -
发布不起作用的确切代码。你说的是“非常相似”——嗯,非常相似并不是完全相同,所以
contains方法当然会返回false。 -
如果您只想确定字符串是否已经存在,请使用哈希集。
-
请提供实际输出和预期输出的示例。就像埃尔文所说的那样。 @寂寞