+ 1
HashSet<String [ ] > won't add new items
I'm able to find all permutations. And my idea was, to filter out the doubles by adding them to a HashSet. But the Set size is always only 1. Can someone tell me, why this is not working as expected, please? https://code.sololearn.com/cXabLcSUKbzZ/?ref=app
7 Réponses
+ 2
You're adding the string array "elements" to the set, but HashSet only allows unique elements as determined by Object.equals, and that's not changing on each iteration. No new element is being added (as shown by the false output on all but the first line)
+ 2
No problem. A list might be a better option here. Pretty sure array equality is just it's hashcode
+ 2
Nice job! Ah I see you're using it to get the unique permutations with repeated elements by excluding duplicates using a set.
A couple of minor comments just for brevity - line 26 a new int array is initialized to all 0s in java so don't need the for loop (arrays always initialize to the type default, so boolean[] would all be false, Object[] would all be null etc)
Line 32 you could clean up by just doing
if(set.add(...))
Instead of making a new variable to track the boolean result. Not required but can tidy it up a little
+ 1
Oooh, ok. Now it's clear. The elements of the array and the array it selfs makes the difference 😮. Thanks a lot.
+ 1
Oh and by list I meant instead of HashSet :) the array is fine to use otherwise
+ 1
Dan Walker
Yes, that's what I want to do. Excluding duplicates by using a Set.
And thanks for your latest comments 👍
0
Dan Walker
I had a sleepless night. But now I got it.
I have tryed to hash String-Arrays. But there is only one: String[] elements.
This is every time the same array. And it can only be one times in the Set.
But what I want is to hash the items in the Array. So I have corrected this. Now it works 😀
https://code.sololearn.com/coGnU6M5F4gD/?ref=app