kodiak Posted March 25, 2013 at 03:58 PM Report #500311 Posted March 25, 2013 at 03:58 PM Olá pessoal. Imaginem que tenho a seguinte declaração: int a001, a002, a003, a004, a005, a006, continua por aqui fora.... a997,a998,a999; Imaginemos agora que tenho um if que verifica uma condição. Se essa condição for satisfeita, o programa vai extrair os valores de um hasmap e atribui às variáveis a001 a a499. Caso contrário, extrai desse mesmo hashmap os valores e atribui às variáveis de a500 a a999. Como não quero fazer isto "à unha", gostava de saber se era possível criar dois arrays de variáveis, ou seja, num array tinha as variáveis a001 a a499 e basicamente quando queria extrair os valores, bastava fazer um ciclo que corria as variáveis e depois era atribuído o valor contido no hashmap a cada uma das variáveis. Depois em qualquer parte do programa, poderia utilizar, por exemplo, a variável a001. Não sei se me fiz entender mas qqr dúvida apitem que tento explicar melhor. Obrigado, kodiak
pmg Posted March 25, 2013 at 04:03 PM Report #500312 Posted March 25, 2013 at 04:03 PM De a001 a a499 são 499 variáveis; de a500 a a999 são 500 variáveis 🙂 O que ganhas em ter as variáceis isoladas em vez dum array a420 em vez de a[420] a003 em vez de a[3] etc? What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
kodiak Posted March 25, 2013 at 04:09 PM Author Report #500314 Posted March 25, 2013 at 04:09 PM De a001 a a499 são 499 variáveis; de a500 a a999 são 500 variáveis 🙂 🙂 O que ganhas em ter as variáceis isoladas em vez dum array a420 em vez de a[420] a003 em vez de a[3] etc? Epá. Agora é que me tramaste. Apenas utilizei estes nomes "sequenciais" por ser mais simples exemplificar. Se assim fosse, teria claramente vantagem em fazer como disseste. O problema é que os nomes das variáveis não são sequenciais e não estão por ordem.
pmg Posted March 25, 2013 at 04:28 PM Report #500319 Posted March 25, 2013 at 04:28 PM Se fosse em C (eu não sei Java), depois de tentar soluções mais práticas e não conseguir, fazia um array de apontadores int *a[1000]; a[0] = &zero; a[1] = &um; ... a[420] = &quatrocentos_e_vinte; ... a[999] = &novecentos_e_noventa_e_nove; Depois acualizas à vontade *a[42] = *a[16] + *a[26]; /* quarenta_e_dois = dezasseis + vinte_e_seis */ What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
brunoais Posted March 25, 2013 at 06:42 PM Report #500342 Posted March 25, 2013 at 06:42 PM Em Java: int *a[1000]; a[0] = &zero; a[1] = &um; ... a[420] = &quatrocentos_e_vinte; ... a[999] = &novecentos_e_noventa_e_nove; int[] a = new int[1000]; a[0] = zero; a[1] = um; ... a[420] = quatrocentos_e_vinte; ... a[999] = novecentos_e_noventa_e_nove; *a[42] = *a[16] + *a[26]; /* quarenta_e_dois = dezasseis + vinte_e_seis */ a[42] = a[16] + a[26]; /* quarenta_e_dois = dezasseis + vinte_e_seis */ "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
pmg Posted March 25, 2013 at 06:52 PM Report #500345 Posted March 25, 2013 at 06:52 PM Em Java: int[] a = new int[1000]; a[0] = zero; a[1] = um; ... a[420] = quatrocentos_e_vinte; ... a[999] = novecentos_e_noventa_e_nove; a[42] = a[16] + a[26]; /* quarenta_e_dois = dezasseis + vinte_e_seis */ Tens a certeza? Nao me parece -- mas nao sei Java 😉 Se imprimires a variavel quarenta_e_dois depois da atribuicao vai-te aparecer o valor anterior, nao? Em C: dezasseis = 1000; vinte_e_seis = 26; quarenta_dois = 0; *a[42] = *a[16] + *a[26]; /* quarenta_e_dois = dezasseis + vinte_e_seis */ printf("valor: %d\n", quarenta_e_dois); /* imprime 1026 */ What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
brunoais Posted March 25, 2013 at 07:24 PM Report #500349 Posted March 25, 2013 at 07:24 PM Se não fiz bem, é pq percebi mal o problema que o OP escreveu. "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
kodiak Posted March 25, 2013 at 10:12 PM Author Report #500371 Posted March 25, 2013 at 10:12 PM (edited) Caneco. Faço eu uma viagem de 3 horas de carro para chegar a casa e ver esta "discussão" 🙂 Acho que não me expliquei bem. Imaginem que tenho estas variáveis int azul, verde, amarelo, vermelho, laranja; Vamos imaginar que em vez de ter a declaração como coloquei acima, tinha um array assim: int[] arrayDeVariaveis = {azul, verde, amarelo, vermelho, laranja}; Ou seja, em vez de declarar as variáveis como fiz inicialmente, declarava um array em que cada uma das posições era uma variável. Depois poderia fazer algo como for(int i = 0; i<arrayDeVariaveis.lenght;i++){ arrayDeVariaveis[i] = i; } System.out.println(verde*amarelo); /*Aqui imprimia 6*/ Desculpa se não consigo explicar melhor. Obrigado pela ajuda. kodiak Edited March 25, 2013 at 10:13 PM by kodiak
brunoais Posted March 25, 2013 at 10:33 PM Report #500375 Posted March 25, 2013 at 10:33 PM Hum... O que parece agora é que o que tu queres é um HashTable ou um HashMap. Em Java não existem variáveis variáveis. Existe em C e em php, mas n em java. "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
kodiak Posted March 25, 2013 at 10:38 PM Author Report #500377 Posted March 25, 2013 at 10:38 PM Hum... O que parece agora é que o que tu queres é um HashTable ou um HashMap. Pois. Também já tinha pensado nisso. Tendo em conta o número de variáveis, devo ver essa hipótese uma vez que provavelmente a performance não será muito alterada... HashTable ou HashMap? O Map é mais versátil não é?
brunoais Posted March 26, 2013 at 08:18 AM Report #500404 Posted March 26, 2013 at 08:18 AM São ambos igualmente versáteis. A diferença é que um é thread-safe e o outro n o é. "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
kodiak Posted March 26, 2013 at 11:43 AM Author Report #500439 Posted March 26, 2013 at 11:43 AM São ambos igualmente versáteis. A diferença é que um é thread-safe e o outro n o é. Ok. Como a sincronização não é um problema vou testar o HashMap. Obrigado pela ajuda
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now