我打算做的基本上是:
因此,如果您对我的方法有任何建议或任何问题。请提出建议。
答案 0 :(得分:0)
欢迎堆栈溢出!
这种方法听起来不错。我可以建议使用Regex来节省您的时间编码。另一个需要考虑的问题是,确保不存储每个单词,而是仅在您的集合中存储唯一单词。
答案 1 :(得分:0)
您可以使用retainAll
确定两个集合的交点public class App {
public static void main(String[] args) {
App app = new App();
app.run();
}
private void run() {
List<String> file1 = Arrays.asList("aap", "noot", "aap", "wim", "vuur", "noot", "wim");
List<String> file2 = Arrays.asList("aap", "noot", "mies", "aap", "zus", "jet", "aap", "wim", "vuur");
List<String> file3 = Arrays.asList("noot", "mies", "wim", "vuur");
System.out.println(getCommonWords(file1, file2, file3));
}
@SafeVarargs
private final Set<String> getCommonWords(List<String>... files) {
Set<String> result = new HashSet<>();
// possible optimization sort files by ascending size
Iterator<List<String>> it = Arrays.asList(files).iterator();
if (it.hasNext()) {
result.addAll(it.next());
}
while (it.hasNext()) {
Set<String> words = new HashSet<>(it.next());
result.retainAll(words);
}
return result;
}
}
还请查看this answer,它显示了我上面给出的相同解决方案,以及使用Java 8 Streams进行编码的方法。