我正在使用FileReader
带有a 的 basic 读取文件,并根据它们是否有句Buffer
点将结果分类到不同的 s 中。HashSet
稍后在我的程序中,我将字符串与HashSet
usingcontains()
方法进行比较。
Non-period set 工作正常,但是其中有句号的 set 被搞砸了。我相信我已经将其范围缩小到 add 方法,尽管它也很可能与读取文件的方式有关。
{
FileReader file;
BufferedReader br;
try {
file = new FileReader(new File("./support/effective_tld_names.txt"));
br = new BufferedReader(file);
String temp;
while ((temp = br.readLine()) != null) {
if(!(temp.startsWith("//") || temp.isEmpty())){
int dotCount = temp.length() - temp.replace(".", "").length();
if(dotCount == 0){
singleTLDSet.add(temp);
} else if(dotCount == 1) {
System.out.println(StringEscapeUtils.escapeJava(temp));
doubleTLDSet.add(StringEscapeUtils.escapeJava(temp));
} else {
}
}
}
file.close();
br.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
稍后在我的程序中:
Iterator i = ValidTLDS.getDoubleTLDSSet().iterator();
while(i.hasNext()) {
String next = (String) i.next();
System.out.println(next);
}
奇怪的是,当我遍历 时HashSet
,这些值与我认为的不同:
在将它们添加到之前的 println 结果示例Double
HashSet
:
codespot.com
googleapis.com
googlecode.com
pagespeedmobilizer.com
withgoogle.com
herokuapp.com
herokussl.com
iki.fi
biz.at
info.at
co.pl
azurewebsites.net
结果形式的样本迭代:
eurovision
ventures
ads
ninja
claims
pharmacy
exchange
trust
بھارت
epson
看起来有些 TLD 在此期间之前被截断,有些根本没有出现在哈希集中。
有人知道我在这里做错了什么吗?关于带字符串的哈希集或从文件中读取是否有一些特殊规则或边缘情况?我只是一个有基本错字或什么的菜鸟吗?