¿Pueden los objetos StringBuffer ser claves en TreeSet en Java?

Tengo el siguiente código donde intento colocar los objetos StringBuffer como claves en un TreeSet. La razón por la que hago esto es para ver si puedo poner objetos mutables como claves. No consigo ningún error de compilación. pero cuando ejecuto este código, aparece el error que está debajo del código. especialmente, me sale estojava.lang.StringBuffer cannot be cast to java.lang.Comparable. ¿Qué indica este error?

desde javadoc veo que la clase StringBuffer se declara final (public final class StringBuffer), ¿no significa eso que es inmutable y por lo tanto hashable?

Soy un novato en el hash y las cosas inmutables, así que ayúdenme aquí.

Gracias

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

Respuestas a la pregunta(7)

Su respuesta a la pregunta