Problema com Arrays Multi-Dimensionais
14/12/2012 15:13
0
Tenho estes Array :
dado=[Ramulária, Ramulária Azul]

itensMonitoramento=[[Curuquerê, Curuquerê Média], [Curuquerê, Curuquerê Oviposição], [Curuquerê, Curuquerê Pequena], [Ramulária, Ramulária Azul], [Ramulária, Ramulária Branca]]

Gostaria de saber qual é a posição do dado no itensMonitoramento mas, ao fazer

intesMonitoramento.contains(dado) == false
intesMonitoramento.indexOf(dado) == -1
intesMonitoramento.findIndexOf{
it[0].equals(dado[0]) && it[1].equals(dado[1])
} // Não funciona missingFunction
Tags: array multi dimensional


0
Detalhe no GroovyConsole do Groovy 2.0.5 dá true no contains, pode isso ?
14/12/2012 15:14


0
Olá, Pedro.
Desculpe mas não entendi o que você quer... aqueles "testes" em seu código são o resultado ou o que você queria que rolasse?


0
São resultados que eu não entendo pois o array está contido no outro.
15/12/2012 09:50


0
Bem, fiz aqui e deu true o "contains".
Meu Groovy é o 1.7.10

def dado=['Ramulária', 'Ramulária Azul']

def itensMonitoramento=[['Curuquerê', 'Curuquerê Média'], ['Curuquerê', 'Curuquerê Oviposição'], ['Curuquerê', 'Curuquerê Pequena'], ['Ramulária', 'Ramulária Azul'], ['Ramulária', 'Ramulária Branca']]

assert itensMonitoramento.contains(dado)


0
Pois é no meu também mas quando rodo no meu Grails 2.1.1 dá false.
15/12/2012 18:08


0
Olá, Pedro.

Bem, quando preencho o valor de dado em tempo de execução, dai dá false, como no código abaixo:

import javax.swing.*

def dado=[:]

def itensMonitoramento=[['Curuquerê', 'Curuquerê Média'], ['Curuquerê', 'Curuquerê Oviposição'], ['Curuquerê', 'Curuquerê Pequena'], ['Ramulária', 'Ramulária Azul'], ['Ramulária', 'Ramulária Branca']]

def chave = JOptionPane.showInputDialog('Chave') // entro com 'Ramulária'
def valor = JOptionPane.showInputDialog('Valor') // entro com 'Ramulária Azul'
dado+=["$chave":"$valor"]

assert itensMonitoramento.contains(dado)


Talvez por isso que na sua aplicação aconteça o mesmo.
Acho que é como aquele clássico caso em Java:
String t1 = "azul";
String t2 = "azul";
boolean r1 = (t1==t2); //dá true

Mas
String t1 = "azul";
String t2 = JOptionPane.showInputDialog('Digite uma cor'); //dai você entra com "azul"
boolean r1 = (t1==t2); //dá false


0
Errata:

onde está def dado=[] leia-se def dado=[:]
e onde está dado+=["$chave":"$valor"] leia-se dado+=["$chave","$valor"]


0
Que estranho...

quando faço
dado+=chave
dado+=valor

Após receber os valores via JOptionPane o assert dá certo!


0
Finalmente, fiz como abaixo... veja no que deu:

import javax.swing.*

def dado=[]

def itensMonitoramento=[['ok','nao ok'],['www','http'],['Ramulária', 'Ramulária Azul'], ['Ramulária', 'Ramulária Branca']]

def chave = JOptionPane.showInputDialog('Chave')
def valor = JOptionPane.showInputDialog('Valor')
dado+=chave
dado+=valor

println itensMonitoramento.contains(dado) // deu true
println itensMonitoramento.indexOf(dado) // deu 2



0
José, muito obrigado pela atenção, eu estou vendo o seu código aqui, mas esses arrays são resultado de CriteriBuild os dois, não sei até onde daria certo fazer +=, mas vou dar uma analisada aqui, muito obrigado mesmo.
17/12/2012 19:01



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto