Looping infinito

Alguém sabe me explicar o por que a minha lista de nodesNotObject cresce infinitamente… o problema é exatamente nessa linha que está comentada, se eu modificar ela para List<Node> auxNodes = new ArrayList() o problema não dá mais, mas queria saber o motivo de ter ficado infinitamente crescendo a minha lista e o meu size de nodesNotObject ficar gigantesco… esperimente rodar esse trecho de código e acompanhar o gerenciamento de memória no windows…


	public Graph getGraphWithObject(List<Node> nodesNotObject) {

		Graph graph = new Graph();

		List<Node> auxNodes = nodesNotObject; //error está aqui

		Node auxNode = new Node();

		Node object = new Node();

		for (int i = 0; i < nodesNotObject.size(); i++) {

			for (int j = 0; j < nodesNotObject.size(); j++) {

				if (nodesNotObject.get(i).getSubject()
						.equals(nodesNotObject.get(j).getSubject())) {

					auxNode = nodesNotObject.get(i);
					auxNode.setObject(object);
					auxNodes.add(auxNode);

				}

			}

		}

		graph.setNodes(auxNodes);

		for (Node node : graph.getNodes()) {

			System.out.println(node.getSubject());
			System.out.println(node.getEdge());
			System.out.println(node.getObject().getSubject());
		}
		return graph;
	}

Você está iterando na própria lista em que está adicionando objetos.

E, o pior, o objeto que você adiciona satisfará a condição do if, fazendo ele ser adicionado infinitas vezes.

Se você queria uma cópia da lista, a linha 05 deveria ser:

 List<Node> auxNodes = new ArrayList<Node>(nodesNotObject); 

Foi isso que eu já tinha feito. Vlw cara!