Lista de Lista de Coordenadas ("List<List<Coordenadas>>"), como comparar?

3 respostas
javaarraylistlist
D

Tenho uma lista de listas de coordenadas e precisava comparar as coordenadas da primeira lista com as das demais listas…

Por exemplo:

List<List1<Coordenadas>, List2<Coordenadas>, List3<Coordenadas>,...> listas;

for (List< Coordenadas> a : listas)
  for (int i = 0; i < a.size(); i++)
  a.get(i).getCoordX()  > coordenadaX das próximas listas

Se alguém puder me auxiliar com alguma solução ou material ficaria muito agradecido.

3 Respostas

P

ola

isso esta abstrato demais. digamos q vc tem duas listas, qual o resultado esperado?

e se as listas tem tamanhos diferentes?

se vc quer saber se a primeira tem a coordenada x maior que todas as outras, vc poderia remover a primeira lista das listas e fazer a comparação. se encontrar um valor menor ou igual vc pode interromper todo o loop ( com return false ou um break para o loop mais inteiro ou externo - break com label ) mas ai depende da definição de “comparar”.

que eu não faço ideia do que vc quer dizer.

D

Tem o código real dessa lista de Coordenadas? (se tiver por favor poste, está muito vago o que você está tentando fazer e talvez existe soluções melhores)

D

Desculpa, achei mesmo que tinha sido meio abstrato, vou tentar explicar melhor.
Então assim, estou fazendo um trabalho de analise de dados onde eu preciso analisar o comportamento de certas pessoas. Me passaram um txt de coordenadas, onde cada linha é o caminho que uma pessoa fez.

[Coordenadas [coordX=950, coordY=421, time=1], Coordenadas [coordX=950, coordY=421, time=2],…
[Coordenadas [coordX=968, coordY=292, time=1], Coordenadas [coordX=968, coordY=292, time=2],…

Desse jeito eu salvei todas as listas de coordenadas em uma grande “List< List< Coordenadas>” (Lista coordinates) e desenhei elas em um JPanel com um comando de um botão.

Ainda tenho uma classe Coordenadas ( [coordX=950, coordY=421, time=1] ) que me da acesso separada, getCoordX(), getCoordY(), getTime().

mapear.addActionListener(new ActionListener() {
	public void actionPerformed(ActionEvent e) {
		for (List<Coordenadas> a : coordinates) {
			for (int i = 0; i < a.size(); i++) {
				if (i + 1 < a.size()) {
					int x1 = a.get(i).getCoordX();
					int y1 = a.get(i).getCoordY();
					int x2 = a.get(i + 1).getCoordX();
					int y2 = a.get(i + 1).getCoordY();
					Color randomColor = Color.BLACK;
					janela.addLine(x1, y1, x2, y2, randomColor); 
                                 // drawLine(x1,y1,x2,y2)
				}
                         }
}}});

Com os caminhos desenhados vem o meu problema, eu preciso avaliar a proximidade entre as pessoas, se eles se reuniram em grupos ou coisas assim… O meu plano era fazer cada avaliação em um botão, cada botão com uma respectiva cor, que quando clicado, mudava a cor das linhas (pintava por cima) se chegou muito perto da outra ou coisa do genero. Mas pra isso eu preciso comparar os pontos de todas as listas, ou seja, pegar ponto por ponto e ir comparando pra ver se a “corX()” da “Lista1” ficou tantos pontos da “corX()” da “Lista2”.

Caminho das pessoas (do txt atual):

Observação: Cada traços desses é uma List< Coordenadas>.

Criado 5 de setembro de 2016
Ultima resposta 5 de set. de 2016
Respostas 3
Participantes 3