Я понимаю, что задаю сразу два отдельных вопроса, но думаю, что они связаны (хотя бы немного).
В любом случае, я хочу сравнить два списка (не обязательно списки Java) строк и удалить слова, которые встречаются в обоих списках. Я думал использовать либо ArrayList
, либо HashSet
с HashSet
, который предпочитается, поскольку списки не упорядочены, но моя проблема с HashSet заключается в том, что Я читал, что они не позволяют дублировать. Это немного противоречит моему другому требованию, поскольку я хочу, чтобы уметь подсчитывать количество раз каждое слово, но показывать их только один раз ... если это имеет смысл.
Подумайте о примере WordCloud.
Вот что я имею в настоящее время, сохраняя содержимое двух текстовых файлов на два ArrayList
s:
ArrayList words = new ArrayList();
File file = new File(fileName);
Scanner scanner = new Scanner(file).useDelimiter("$");
while(scanner.hasNext())
{
String wrd = scanner.nextLine();
words.add(wrd);
}
Мне пришлось использовать два разных способа сохранения данных, поскольку два текстовых файла были структурированы по-разному
ArrayList webWords = new ArrayList();
File webFile = new File(webFileName);
BufferedReader br = new BufferedReader(new FileReader(webFileName));
String testLine = "", str = "";
int count = 0;
String s;
while ((testLine = br.readLine()) != null) {
str += testLine + " ";
}
StringTokenizer st = new StringTokenizer(str);
while (st.hasMoreTokens()) {
s = st.nextToken();
webWords.add(s);
count++;
}
Теперь я мог бы легко создать два HashSets аналогичным образом, но на данный момент я использую ArrayList, поскольку он позволяет дублировать, и я по-прежнему не уверен, что подходит для моих потребностей лучше всего.
Мне нужно сравнить второй список с первым и удалить все слова во втором списке, которые появляются в первом списке.
Моя вторая проблема пытается определить (после того, как я удалил общие слова), какие слова встречаются наиболее часто.
Любая помощь или направление были бы весьма признательны.