You are making your code way too complicated, use a HashSet<String>, which will guarantee uniqueness and will return whether the element was already in the set.
public class DuplicateEle {
public static void main(String args[]) {
Set<String> seen = new HashSet<>();
String[] arr = { "hello", "hi", "hello", "howru" };
for (String word : arr) {
boolean unique = seen.add(word);
System.out.printf("%s is duplicate: %b%n", word, !unique);
}
}
}
Using a HashSet is very efficient as it will use the int hash of the string to find the bucket, only then needing to use equals to do a full ‘expensive’ equals.
1
solved Searching Duplicate String Complexity