Eu tenho vetor (chamado vetor) do tipo Map. Minhas Map guardam objetos que são ordenados por uma string chamada id.
Ou seja, em cada indice do meu vetor eu tenho uma arvore com objetos de uma classe q eu criei.
eu também tenho um vetor bidimensional chamado x. Eu quero inserir somentes os ids das minhas arvores nele. Assim, os ids que estão nas arvores do indice 0 do vetor eu quero inserir no x[0][0], x[0][1], assim sucessivamente.
Eu escrevi esse código, mas ele não aceita a linha que eu sinalizei com um ***
Alguém sabe o pq?
public void treeToArray(){
String x[][] = new String[dm.getQtdTipos()][];
for(int i=0; i < vetor.length; i ++) {
x[i]=new String[vetor[i].size()];
Set chaves = vetor[i].keySet();
Iterator it = chaves.iterator();
while(it.hasNext()) {
for(int j=0;j<vetor[i].size();j++){
x[i][j]=it.next(); ***
}//end for
}//end while
}//end for
}//end metodo
Obrigada
Você deveria especificar o tipo do seu set e do seu Iterator:
Set<String> chaves = vetor[i].keySet();
Iterator<String> it = chaves.iterator();
Além disso, perceba que você chama next() várias vezes. O correto é chamar next() apenas 1 vez para cada teste de hasNext(). Procure usar o for each no lugar do iterator para evitar esse tipo de confusão:
public void treeToArray(){
String x[][] = new String[dm.getQtdTipos()][];
for(int i=0; i < vetor.length; i ++) {
x[i]=new String[vetor[i].size()];
for (String chave : vetor[i].keySet()) {
for(int j=0;j<vetor[i].size();j++){
x[i][j]=chave;
}//end for
}//end while
}//end for
}//end metodo
>
[quote=oitathi]Eu tenho vetor (chamado vetor) do tipo Map. Minhas Map guardam objetos que são ordenados por uma string chamada id.
Ou seja, em cada indice do meu vetor eu tenho uma arvore com objetos de uma classe q eu criei.
eu também tenho um vetor bidimensional chamado x. Eu quero inserir somentes os ids das minhas arvores nele. Assim, os ids que estão nas arvores do indice 0 do vetor eu quero inserir no x[0][0], x[0][1], assim sucessivamente.
Eu escrevi esse código, mas ele não aceita a linha que eu sinalizei com um ***
Alguém sabe o pq?
public void treeToArray(){
String x[][] = new String[dm.getQtdTipos()][];
for(int i=0; i < vetor.length; i ++) {
x[i]=new String[vetor[i].size()];
Set chaves = vetor[i].keySet();
Iterator it = chaves.iterator();
while(it.hasNext()) {
for(int j=0;j<vetor[i].size();j++){
x[i][j]=it.next(); ***
}//end for
}//end while
}//end for
}//end metodo
Obrigada[/quote]
Não seria melhor trabalhar List dentro de Map, ou Map dentro de Map, de ver com vetores simples.
Map<SeuIndice, Map<Indice,Elemento>> mapa = new HashMap<SeuIndice, Map<Indice,Elemento>> ();
Oi vini, mas quando eu usei o seu código e mandei printar as minhas chaves, elas foram printadas diversas vezes…
public void treeToArray(){
String x[][] = new String[dm.getQtdTipos()][];
for(int i=0; i < vetor.length; i ++) {
x[i]=new String[vetor[i].size()];
for (String chave : vetor[i].keySet()) {
for(int j=0;j<vetor[i].size();j++){
x[i][j]=chave;
System.out.println}(chave);
}//end for
}//end while
}//end for
}//end metodo
Mas quando eu permeneci com o meu e coloquei um .toString no final, ele printou normalmente
public void treeToArray(){
for(int i=0; i < vetor.length; i ++) {
x[i]=new String[vetor[i].size()];
Set chaves = vetor[i].keySet();
Iterator it = chaves.iterator();
while(it.hasNext()) {
for(int j=0;j<vetor[i].size();j++){
x[i][j]=it.next().toString();
System.out.println("teste "+x[i][j]);
}//end for
}//end while
}//end for
}//end metodo
Tah muito errado eu fazer assim?
O que esse código tem que fazer?
eu vou postar um desenho do que eu quero… acho q fica mais fácil de explicar!
Esse código tah fazendo exatamente o q está simbolizado pela seta preta em negrito a esquerda, ou seja, pegando apenas os ids dos objetos NovosDados e jogando APENAS esses ids no meu vetor de String bidimensional, entende?