Java – Find Unique Words in a String

To find unique words in a string, split the string into words with a delimiter, and then from the words get those which are unique using a HashSet or a nested loop.

In this tutorial, we shall write Java programs to find the unique words in a given string.

Find Unique Words in String using HashSet

HashSet stores only unique values. Follow these steps to store unique words of a string in a HashSet.

  1. Start.
  2. Read input string.
  3. Split string with a delimiter, which is usually a single space. This returns an array of words.
  4. Create an Hashset with the array of words. Now, HashSet contains only unique words.
  5. You may print the unique words.
  6. Stop.

In the following program, we just initialized a string str. You may load this variable with text from a file, or input read from user.

Example.java

</>
Copy
import java.util.Arrays;
import java.util.HashSet;

/**
 * Java Program - Find Unique Words
 */
public class Example {

	public static void main(String[] args) {

		String str = "apple banana mango grape lichi mango apple grape";
		
		String[] words = str.split(" ");
		
		HashSet<String> uniqueWords = new HashSet<String>(Arrays.asList(words));
		
		for(String s:uniqueWords)
			System.out.println(s);
	}

}

Output

banana
apple
lichi
grape
mango

Find Unique Words in String using List & Nested For Loop

Follow these steps to store unique words of a string in a List.

  1. Start.
  2. Read input string.
  3. Split the string based on a delimiter. This can be a space, comma, or something that separates words in the string. This returns array or words.
  4. Create an List with the array of words.
  5. For each word in the list, check if there is another word with the same value. If so, delete the another word.
  6. At the end of all iterations, you end up with list containing only unique words.
  7. Stop.

In the following program, we used For Loop for iterating over the words in list.

Example.java

</>
Copy
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;

/**
 * Java Program - Find Unique Words
 */
public class Example {

	public static void main(String[] args) {

		String str = "apple banana banana mango grape lichi mango apple grape";
		
		String[] words = str.split(" ");
		
		List<String> uniqueWords = new ArrayList<String>(Arrays.asList(words));
		
		for(int i=1; i<uniqueWords.size(); i++) {
			for(int j=0;j<i;j++) {
				if(uniqueWords.get(i).equals(uniqueWords.get(j))) {
					uniqueWords.remove(i);
					i--;
					break;
				}
			}
		}
		
		for(String s: uniqueWords) {
			System.out.println(s);
		}
	}

}

Output

apple
banana
mango
grape
lichi

Conclusion

In this Java Tutorial, we learned how to find unique words in a string, using HashSet or with the combination of List and nested for loop.