can StringBuffer objects be keys in TreeSet in Java?

前端 未结 8 742
滥情空心
滥情空心 2020-12-21 15:18

I have the following code where I am trying to put the StringBuffer objects as keys in a TreeSet. The reason I do this is to see if I can put mutable objects as keys. I do n

8条回答
  •  一个人的身影
    2020-12-21 15:51

    The issue is that TreeSet sorts the items you put in it. Because StringBuffer doesn't implement Comparable, the TreeSet doesn't know how to sort them. You should pass in a Comparator when you create the TreeSet. Your comparator will tell the TreeSet how to sort the StringBuffers. Either that, or you can use a HashSet, which does not sort the elements.

    As far as immutability goes: the final keyword on a class declaration means you can't subclass (extend) it. It does not, in and of itself, make the class immutable. Immutable means that the state of the object cannot be changed once it has been created. StringBuffers definitely can have their state changed after they are created, so they are not immutable.

提交回复
热议问题