Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Carcleo

Comparar voltas em um array list

Recommended Posts

Pessoal,

 

Tenho um ArrayList de inteiros com duas posições.

 

A primeira posição me retorna

 

[1, 3, 3, 2]

 

E a segunda me retorna:

[3, 1, 1, 4]

 

Preciso comparar se a cada 2 elementos da volta de cima tem comparação com outros 2 elementos da volta de baixo.

Exemplo:

 

1,3 da volta de cima vou comparar com:

1-3 <=> 3,1
1-3 <=> 1,4

 

Note que 1-3 e 3-1 para efeito desse exercício são a mesma coisa (não direcionado)

 

O que eu preciso fazer nesse caso é retornar o array da forma abaixo:

{1-3, 3-2, 1-4}

Excluindo a repetição.

 

Podem me ajudar fazendo favor?

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade não são duas posições: São dois objetos com o mesmo nome!

Veja a geração:

 

import java.util.ArrayList;
import java.io.File;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.IOException;
 
public class Principal
{
  public static void main (String args[])
  {
 
    CriaListas listaPossivel = new CriaListas("arquivoPossiveis.txt");
    CriaListas listaObrigatorio = new CriaListas("arquivoObrigatorios.txt");
ArrayList<Ligacoes> listaDePossiveis = listaPossivel.populaArrayList();
ArrayList<Ligacoes> listaDeObrigatorios = listaObrigatorio.populaArrayList();
try {
File arquivo = new File("resp.txt");
FileWriter fw = new FileWriter(arquivo); 
fw.write("{");
for (int i = 0; i < listaDeObrigatorios.size(); i++)
    {
      int pontoOA = listaDeObrigatorios.get(i).getPontoA();
      int pontoOB = listaDeObrigatorios.get(i).getPontoB();
 
      int pontoPA;
      int pontoPB;
      int pontoPDistanciaAB = 0;
 boolean existe=false;
 
     for (int j = 0; j < listaDePossiveis.size(); j++)
      {    
          pontoPA = listaDePossiveis.get(j).getPontoA();
          pontoPB = listaDePossiveis.get(j).getPontoB();
          pontoPDistanciaAB = listaDePossiveis.get(j).getDistanciaAB();
 
 if(
     (
  (pontoOA == pontoPA) || (pontoOA == pontoPB)
 )&&
 (
  (pontoOB == pontoPA) || (pontoOB == pontoPB)
 )
)
{
 existe=true;
}
            
      } 
 
 if(existe)
 {
  //O ponto escolhido esta na ArrayList Possíveis. 
  //Então, mostra a distancia.    
  BuscaVizinho vizinho = new BuscaVizinho(pontoOA, pontoOB, listaDePossiveis, pontoPDistanciaAB);
  ArrayList<Integer> vizinhoNo = vizinho.buscarVizinho();
  
  MenorCaminho menorCaminho = new MenorCaminho(pontoOA, pontoOB, listaDePossiveis, vizinhoNo, pontoPDistanciaAB);
  ArrayList<Integer> menorCaminhoAL = menorCaminho.buscaMenorCaminho();
  
  //AQUI menorCaminhoAl funciona
  System.out.println("AQUI TEMOS O MELHOR CAMINHO COM AS COMBINAÇÕES REPETIDAS PARA ESSE OBJETO"); 
  System.out.println(menorCaminhoAL); 
  System.out.println(); 
  
  RemoveRepetidas listaSemRepeticao = new RemoveRepetidas(menorCaminhoAL);
  ArrayList<Integer> listaLimpa = listaSemRepeticao.removeRepetida();
 
  for (int p = 0; p < listaLimpa.size(); p++)
  {
    fw.write(menorCaminhoAL.get(p).toString()+"-"); 
  } 
 
  fw.write(",");
  
  //AQUI menorCaminhoAl vem errado por ser gerado dois objetos
  System.out.println("DESCULPA, NÃO CONSEGUI FAZER A EXCLUSÃO APENAS DE UMA COMBINAÇÃO DUPLICADA. MAS TENTEI!"); 
  System.out.println(listaLimpa); 
  System.out.println(); 
  System.out.println(); 
 }
    }
fw.write("}");
    fw.flush();  
    fw.close();
   } catch (IOException e) 
    { 
      System.err.printf("Erro na abertura do arquivo: %s.\n", e.getMessage());      
}
   
  }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.