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