【Java】特定の文から重複する単語をすべて削除する方法
指定した文の中から重複している単語をすべて取り除きたい場合、JavaではStream APIを活用することで、非常にシンプルに実装できます。ここでは、実際のコード例とその仕組みをわかりやすく解説します。
サンプルコード
import java.util.Arrays;
import java.util.stream.Collectors;
public class Demo{
public static void main(String[] args){
String my_str = "This is a is sample a sample only.";
my_str = Arrays.stream(my_str.split("\\s+")).distinct().collect(Collectors.joining(" "));
System.out.println(my_str);
}
}
実行結果
This is a sample only.
プログラムの解説
このプログラムでは、Demoというクラス内にmainメソッドを定義しています。まず、重複する単語を含む文字列をString型の変数として用意します。
その後、たった1行の処理で重複の除去が完了します。処理の流れは以下の通りです。
- split("\\s+"):正規表現を使って、1つ以上の連続した空白文字を区切りとして文を分割し、単語の配列を作成します。
- Arrays.stream():作成した配列をストリームに変換します。
- distinct():ストリーム内の重複する要素を除外します。初めて出現した単語の順序は保持されます。
- Collectors.joining(" "):残った単語を半角スペースで連結し、再び1つの文字列にまとめます。
最後に、System.out.println()で結果をコンソールに出力しています。出力を見ると、「is」や「a」、「sample」といった重複していた単語が取り除かれ、それぞれ1回だけ表示されていることが確認できます。
このように、Java 8以降で利用できるStream APIを組み合わせれば、ループ処理を明示的に書かずとも、簡潔かつ可読性の高いコードで重複単語の削除を実現できます。
-
【Python】文字列から重複する単語をすべて削除する方法
Pythonで文字列に含まれる重複した単語をすべて削除するには、まず文字列をスペースで区切って各単語をリストに格納します。そのうえで、いくつかの方法で重複を取り除くことができます。 ここでは、すべての単語を小文字に変換してからソートし、重複を除外して一意な単語のみを抽出する方法を紹介します。 ソートとループを使った方法 次のコードでは、split()メソッドで文字列を単語ごとに分割し、lower()で小文字に統一したあと、リストを走査して重複しない単語だけを新しいリストに追加しています。 sent = Hi my name is John Doe John Doe is my name #
-
JavaでArrayListから重複要素を削除する方法【SetとStream API】
この記事では、JavaのArrayListから重複する要素を削除する方法を、具体的なコード例とともにわかりやすく解説します。代表的な2つのアプローチを紹介するので、目的や使用しているJavaのバージョンに応じて使い分けてください。 ArrayListから重複する文字列を削除する Setインターフェースには「重複した要素を保持できない」という特性があります。この特性を利用して、重複を含むArrayListを引数としてSetオブジェクトを生成すれば、手軽に重複を除去できます。 ポイントはLinkedHashSetを使うことです。通常のHashSetではなくLinkedHashSetを採用することで