Reputation: 582
I have written the following code and i am getting all the duplicates even i have used set.
private void validatingpswwithpattern(String password) throws IOException
{
List<String[]> list=new ArrayList<String[]>();
list.add(new String[]{"raj","duvva","sathish"});
list.add(new String[]{"raj","duvva","sathish"});
list.add(new String[]{"raj","duvva","sathish"});
list.add(new String[]{"raj","duvva","sathish"});
list.add(new String[]{"raj","duvva","sathish"});
list.add(new String[]{"raj","duvva","sathish"});
Set<String[]> hs = new HashSet<String[]>();
hs.addAll(list);
list.clear();
list.addAll(hs);
System.out.println(list);
}
Upvotes: 3
Views: 108
Reputation: 4418
You can do in the following way. If you want to remove duplicate elements, then you can do something in this way.
List<String[]> list=new ArrayList<String[]>();
list.add(new String[]{"raj","duvva","sathish"});
list.add(new String[]{"raj","duvva","sathish"});
list.add(new String[]{"raj","duvva","sathish"});
list.add(new String[]{"raj","duvva","sathish"});
list.add(new String[]{"raj","duvva","sathish"});
list.add(new String[]{"raj","duvva","sathish"});
TreeSet<String[]> set = new TreeSet<String[]>(new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
return Arrays.equals(o1, o2)? 0 : 1;
}
});
set.addAll(list);
list = new ArrayList<String[]>(set);
Upvotes: 0
Reputation: 1619
If you want to use HashSet
you need to wrap your String[]
into a List
using Arrays.asList
.
Upvotes: 0
Reputation: 393851
Since arrays don't override the default implementation of hashCode
and equals
from Object
class, HashSet
is useless for eliminating duplicates.
You could use a TreeSet
and supply a Comparator<String[]>
that would determine when two String
arrays are equal.
TreeSet<String[]> set = new TreeSet<> (new Comparator<String[]>() {
public int compare(String[] o1, String[] o2)
{
// write here logic to determine whether o1<o2 (return -1) or
// o1>o2 (return 1) or
// o1 is equal to o2 (return 0)
}
});
set.addAll(list);
Upvotes: 6