ここで一度に 2 つの別々の質問をしていることに気付きましたが、それらは関連していると思います (わずかではありますが)。とにかく、私がやりたいことは、文字列の 2 つのリスト (必ずしも Java リストではない) を比較し、両方のリストに含まれる単語を削除することです。リストが順序付けされていないため、 anArrayList
または aHashSet
をHashSet
優先して使用することを考えていましたが、HashSet に関する私の問題は、それらが重複を許可しないことを読んだことです。これは、各単語が出現する回数を数えることができるようにしたいが、それらを一度だけ表示したいので、私の他の要件とわずかに矛盾します...それが理にかなっている場合。WordCloud の例を考えてみてください。
これが私が現在持っているもので、2つのテキストファイルの内容を2つArrayList
のに保存しています:
ArrayList<String> words = new ArrayList<String>();
File file = new File(fileName);
Scanner scanner = new Scanner(file).useDelimiter("$");
while(scanner.hasNext())
{
String wrd = scanner.nextLine();
words.add(wrd);
}
2 つのテキスト ファイルの構造が異なるため、2 つの異なる方法でデータを保存する必要がありました。
ArrayList<String> webWords = new ArrayList<String>();
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++;
}
これで、同様の方法で 2 つの HashSet を簡単に作成できるようになりましたが、今のところ ArrayList を使用しています。これにより重複が可能になり、どちらが自分のニーズに最も適しているかまだわかりません。
2 番目のリストと 1 番目のリストを比較し、1 番目のリストに表示される 2 番目のリストのすべての単語を削除する必要があります。
私の 2 番目の問題は、(一般的な単語を削除した後で) どの単語が最も頻繁に発生するかを判断しようとすることです。
どんな助けや指示も大歓迎です。