objetos StringBuffer podem ser chaves no TreeSet em Java?

Eu tenho o seguinte código onde estou tentando colocar os objetos StringBuffer como chaves em um TreeSet. A razão pela qual faço isso é ver se posso colocar objetos mutáveis ​​como chaves. Eu não recebo nenhum erro de compilação. mas quando executo esse código, recebo o erro que está abaixo do código. especialmente, eu entendo issojava.lang.StringBuffer cannot be cast to java.lang.Comparable. o que esse erro indica?

do javadoc eu vejo que a classe StringBuffer é declarada final (public final class StringBuffer), isso não significa que é imutável e, portanto, passível de ser?

Eu sou um novato para o material hash e imutável, por favor, me ajude aqui.

obrigado

import java.util.*;
class MutableKeys {
public static void main(String[] args) {
        StringBuffer one = new StringBuffer("one");
        StringBuffer  two = new StringBuffer("two");
        StringBuffer three = new StringBuffer("three");
        Set<StringBuffer> sb=new TreeSet<StringBuffer>();
        sb.add(one);
        sb.add(two);
        sb.add(three);
        System.out.println("set before change: "+ sb);
        one.append("onemore");
        System.out.println("set After change: "+ sb);
    }
}

Exception in thread "main" java.lang.ClassCastException: java.lang.StringBuffer cannot be cast to java.lang.Comparable
    at java.util.TreeMap.put(TreeMap.java:542)
    at java.util.TreeSet.add(TreeSet.java:238)
    at inheritance.MutableKeys.main

questionAnswers(7)

yourAnswerToTheQuestion