Comparando valores de um array

5 respostas
Hanjo_

Ae pessoal eu gostaria de sabe como eu faço pra descobrir se um valor esta dentro de um array. Em delphi eu uso o "in"

Ex.
if ( a in [1,2,3,4] ) then 
Begin
  //
end;

E gostaria de saber se tem algo pareciado em java, ou eu teria que usar um "for" para comparar o valor da variavel "a" com os valores de um array?

Ex.
for (int i=0; i<= 3; i++) {
      if (a==n[i]){
          //
      }
  }

desde já agradeço!

5 Respostas

furutani

Não existe o operador in em java, tem que ser por for mesmo.

J

fala amigo,

acho que é mais ou menos assim...

[code]

for (int i=0; i <= array[].length; i++ )
{
if(array[i] == a)
.....

}

StriderMGBR

Cara, eu acho que usando esse tipo de array ai não tem jeito não, vai ter que ser na base do for mesmo!!
Mas em java existi uma classe, chamada Vector, que te fornece alguns métodos, e dentre esses métodos, um deles é para verificar se existi um determinado valor dentro dessa váriavel do tipo Vector!! Abaixo vai um exemplo:

import java.util.Vector;

public class Testes {
	public static void main(String[] args) {
		Vector v = new Vector();
		v.add(0);
		v.add(1);
		v.add(2);
		v.add(3);
		v.add(4);
		System.out.println(v.contains(0));//Deverá imprimir true
		System.out.println(v.contains(5));//Deverá imprimir false
	}
}

No exemplo eu utilizei valores do tipo inteiro, mas pode ser utilizado qualquer tipo de valor!!

Abraço!!

LPJava

vc usa um for e procura o elemento na posição array[5] == 5 e pronto! ai vc descobre!! o for tem q ser do tamanho do seu array.

Dieval_Guizelini

Para cada problema uma solução…

se você quiser usar o for mesmo… então utilize o for do java 5, desta forma:

int[] v = { 1, 2, 3, 4, 5 };

for(int x:v) {
   if( x == valorPesq ) 
      return true;
}

Mas, se você tem o conjunto (vetor) de objetos, então use um HashMap em que o resultado da pesquisa será O(1).
Exemplo:

java.util.HashMap<Integer,Integer> map = new java.util.HashMap<Integer,Integer>(); ... map.put( new Integer(1), new Integer(1) ); map.put( new Integer(2), new Integer(2) ); map.put( new Integer(3), new Integer(3) ); map.put( new Integer(4), new Integer(4) ); map.put( new Integer(5), new Integer(5) );

e depois na pesquisa

return map.get( numDesejado ) != null;

ainda existem outras duas possibilidades, uma é utilizando enum e outra uma coleção que implemente a interface Set que tem o método contains( object ) para verificação de pertinência e que equivaleria ao operador in do Delphi.

boa sorte.

Criado 14 de outubro de 2006
Ultima resposta 14 de out. de 2006
Respostas 5
Participantes 6