Tenho uma duvida referente a uso do Foreach

1 resposta Resolvido
java
Roger_Souza

Estou fazendo um foreach e nele preciso saber se o proximo elemento é igual ao elemento anterior, mas não estou conseguindo, alguem pode me ajudar por favor.

fico grato desde ja.

String jsonList = "";
			if (hubMessage.payLoad().dado().contains("CNOVA")) {
				List<CategoriaMarketPlace> documents = categoriaMarketPlaceRepository.buscarCategorias();
				List <JSON> jsons = new ArrayList<JSON>();
				for (CategoriaMarketPlace document : documents) {
					if(document.marketPlace().equals("CNOVA")){
						List<DadoCategoriaMarketPlace> dadosCategoria = document.dadosCategoria();
						for(DadoCategoriaMarketPlace dadoCategoria : dadosCategoria){
							DBObject dbObject = (DBObject) com.mongodb.util.JSON.parse(hubMessage.payLoad().dado());
							String categoriaId = (String) dbObject.get("codigo");
							String categoriaName = (String) dbObject.get("nome");
							if (dadoCategoria.categoriaId().equals(categoriaId) && dadoCategoria.categoriaName().equals(categoriaName)) {
								if(){
									jsons.add(JSONEngine.getInstance().toJSON(dadoCategoria));
								}
							}
						}
						
					}
				}
				jsonList= JSONEngine.getInstance().toJsonArray(jsons);

1 Resposta

lvbarbosa
Solucao aceita

Essa é a deficiência do foreach em Java. Você basicamente perde a referência de posição no iterable. Se você precisa de posição, usa um for normal com uma variável de controle.

Outra alternativa é usar o iterador explicitamente, e manter uma referência para o objeto anterior, já que é só isso que você precisa.

public static void main(String[] args) {
    List<Object> objects = Arrays.asList("a", 1, new int[5], 'c');

    Object ultimo = null;
    Object atual = null;

    Iterator<Object> it = objects.iterator();
    while (it.hasNext()) {
        atual = it.next();
        // ...
        if (ultimo != null){
            // nao eh o primeiro, pode comparar
        }
        ultimo = atual;
    }
}
Criado 27 de junho de 2017
Ultima resposta 27 de jun. de 2017
Respostas 1
Participantes 2