【发布时间】:2016-08-09 10:31:34
【问题描述】:
我在两个文件中有两组不是很长(200~500 字)的字符串,如下所示:
File1 File2
this window
that good
word work
java fine
book home
所有唯一的词。
现在首先从文件中读取字符串(逐行)并将它们存储在:
-
Set<String> set1 Set<String> set2:可能看起来像这样:[this, that, word, java, book]和[window, good, work, fine, home]
或者
-
String str1 String str2:可能看起来像这样:str1: thisthatwordjava和str2: windowgoodworkfinehomeOR 可以是str1: this,that,word,java(用逗号分隔)。
现在有三种方法可以检查出现Set 或String 的单词home:
- 使用
set1/2.contains("home") - 使用
str1/2.contains("home") - 使用
str1/2.matches("home")
以上所有方法都可以正常工作,但哪一个是最好的一个
注意:这个问题的目的是因为检查字符串的频率非常高。
【问题讨论】:
-
String.contains()将为"ava"返回 true。 -
我的直觉是 Set 会更好。因为我猜它使用对象的哈希来比较相等性。
-
@kennytm 如果在检查之前将逗号附加到输入字符串的开头和结尾,则不会。
-
在
Strings 的Set中存储单个String的原因是什么?请阅读How to Ask 并提供minimal reproducible example。It's unclear what you're asking. -
@BahramdunAdil 您是否分析了您的程序并发现 Set 比较是一个热点?