A List implementation should work fine. Here's your code using an ArrayList:
String[] s1 = new String[]{"phone","smartphone","dumpphone"};
String[] s2 = new String[]{"phone","phone","smartphone"};
ArrayList<String> union = new ArrayList<>();
// Add elements of s1
for(String s : s1){ union.add(s); }
// Conditionally add elements of s2
for(String s : s2){ if(union.contains(s)){ union.add(s); } }
Results:
for(String s : union){ System.out.println(s); }
Prints
phone
smartphone
dumpphone
phone
phone
smartphone
Note: You say that you're expecting only two occurances of "phone". Why? From your problem statement it's not clear.
EDIT:
As per @dantuch's comment below, you may be looking for something like this instead:
String[] s1 = new String[]{"phone","smartphone","dumpphone"};
String[] s2 = new String[]{"phone","phone","smartphone"};
ArrayList<String> union = new ArrayList<>();
// Add elements of s2
for(String s : s2){ union.add(s); }
// Conditionally add elements of s1 (Only if they're not in s2)
for(String s : s1){ if(!union.contains(s)){ union.add(s); } }
Which would print:
phone
phone
smartphone
dumpphone