gpt4 book ai didi

Java如何使用Hashset在读取文件时添加带句点的字符串

转载 作者:行者123 更新时间:2023-12-01 12:00:40 25 4
gpt4 key购买 nike

我正在使用带有 Buffer 的基本 FileReader 读取文件,并根据 with 将结果排序到不同的 HashSet 中它们是否有句号。

稍后在我的程序中,我使用 contains() 方法将字符串与 HashSet 进行比较。

非句点集工作正常,但包含句点的集就搞砸了。我相信我已经将其范围缩小到了 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 在句点之前被截断,有些根本没有出现在哈希集中。

有人知道我在这里做错了什么吗?关于带有字符串的哈希集或从文件中读取是否有一些特殊的规则或边缘情况?我只是一个菜鸟,有基本的打字错误或其他什么吗?

最佳答案

要么有第三个Set<String>通过 getDoubleTLD-S-Set 或 getter 返回

Set<String> getDoubleTLDSet(){ //getDoubleTLD-S-Set ??
return singleTLDSet;
}

返回单个TLDSet。

否则代码就没有问题。

(调用 StringEscapeUtils.escapeJava 有什么意义?我不会仅仅为了存储字符串而这样做。)

关于Java如何使用Hashset在读取文件时添加带句点的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27998414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com