Problemas com List list1 = Arrays.asList(monica); em um array CHAR
6 respostas
jbpjava
Galera alguém sabe me responder pq quando tento adicionar um array de caracteres em List (list1) ele transforma o resultado em [[C@119298d] [[C@f72617] [[C@1e5e2c3] ???
O objetivo era dar um shuffle no char[] monica mas em list1 ele se transforma nesses numeros.
Stringtexto="java power super";StringTokenizerquebra=newStringTokenizer(texto);while(quebra.hasMoreTokens()){Stringcebolinha=quebra.nextToken();char[]monica=cebolinha.toCharArray();//Transformo em um array de caracteres.Listlist1=Arrays.asList(monica);System.out.println("****list1****: "+list1);// imprime [[C@119298d] [[C@f72617] [[C@1e5e2c3]Randomrand=newRandom();Collections.shuffle(list1,rand);System.out.print(list1);
Lembre que em uma lista só entram objetos, como char é tipo primitivo, ele acaba sofrendo um boxing pra Character.
Então quando você chamou a lista ela chamou o método toString() de cada objeto Character, como eles têm o método toString() da classe Object imprimem somente getClass().getName() + ‘@’ + Integer.toHexString(hashCode()).
O ruim de auto-boxing é que as vezes essas conversões acontecem sem a gente perceber e além dessas confusões entre primitivo e objeto se vc não toma cuidado acaba criando um overhead do cacete.
jbpjava
Depois de dois dias tentando de tudo, deu certo !
Adicionei cada elemento ao List ao invés de adicionar o array inteiro como é feito com Object e como eu estava fazendo acima.
List list2 = new ArrayList(monica.length);
for (int j = 0; j < monica.length; j++) {
list2.add(monica[j]);
}
Random rand = new Random();
Collections.shuffle(list2, rand);
System.out.print(list2);
Valeu galera pela força !
Ola Pessoal, sou novo no forum, e ja tenho um probleminha aqui nas minhas maoes…é o seguinte !
Apos ter feito uma Brigde entre uma Dll (COM+) feita em Delphi e java, eu consigo chamar meus métodos sem problema nenhum.
Porem…alguns métodos (function), possuem seu retorno tipo Variant, que são suportado por outras linguagem, tipo vb etc. Só que o java, quando fez a Bridge do com+, pegou todos os meus retorno tipo Variant e colocou para Object…
Problema…
Tenho uma funcao chamada ADDRESS_NORMALIZATION, e ela me retorna um tipo Object… ja tentei colocar ele dentro uma List da java.util, tentei converter para array de byte e etc…o que voces me sugerem a fazer
[img]
ViniGodoy
Oi.
Não pegue carona em outros tópicos. Quando o seu assunto for outro, crie seu próprio tópico.
Tente descobrir qual é o tipo do objeto que o com te retorna, para poder fazer um cast. Geralmente você descobre isso na documentação.
Ou use o seguinte truque. Dê um System.out.println(objeto.getClass().getName()) para ver a classe real do objeto. E daí faça o cast e veja se consegue usa-la.