public void generateItemsCluster() { if (getItemsCluster().size() > 0) { throw new RuntimeException("Erro!"); } for (Cell cell : getCells().values()) { Item item = cell.getObjectsItem(); if (item != null) { FieldOfView fieldOfView = new FieldOfView(cell); Item keyItensCluster = null; Item keyItensClusterFOV = null; for (Cell cellOfFOV : fieldOfView.getCells().values()) { Item itemFOV = cellOfFOV.getObjectsItem(); if (itemFOV != null) { keyItensCluster = item.getkeyItensCluster(); keyItensClusterFOV = itemFOV.getkeyItensCluster(); if (keyItensClusterFOV != null) { if (keyItensCluster != null) { if (keyItensCluster != keyItensClusterFOV) { Collection<Item> itemsClusterFOVColl = itemsCluster.get(keyItensClusterFOV); for (Item itemsClusterFOV : itemsClusterFOVColl) { itemsClusterFOV.setKeyItensCluster(keyItensCluster); } itemsCluster.get(keyItensCluster).addAll(itemsClusterFOVColl); itemsCluster.remove(keyItensClusterFOV); } } else { item.setKeyItensCluster(keyItensClusterFOV); Collection<Item> coll = itemsCluster.get(keyItensClusterFOV); coll.add(item); } } } } if (keyItensCluster == null && keyItensClusterFOV == null) { item.setKeyItensCluster(item); Set<Item> ItemsClusterCollection = new HashSet<Item>(); ItemsClusterCollection.add(item); itemsCluster.put(item, ItemsClusterCollection); } } } }