There are two ways to use TreeSet .
- It has objects that implement
Comparable - Create a custom
Comparator object that compares the elements of your TreeSet .
Since you want your TreeSet contain BitSet s and BitSet not to implement Comparable , you need to tell TreeSet to TreeSet custom Comparator . How you implement this, Comparator up to you.
SortedSet<BitSet> s = new TreeSet<BitSet>(new CustomBitSetComparator()); s.add(bitSet1); s.add(bitSet2);
The comparator might look something like this:
class CustomBitSetComparator implements Comparator<BitSet>{ int compare(BitSet a, BitSet b) { if(a == b){ return 0; } else if(a == null) { return -1; } else if(b == null) { return 1; } else if(a.equals(b)) { return 0; } else if(a.length() > b.length()) { return 1; } else if(b.lenght() > a.length()) { return -1; } else { for(int i = 0; i < a.length(); i++) { if(a.get(i) != b.get(i)) { if(a.get(i)) { return 1; } else { return -1; } } } return 0; } } }
source share