import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.*;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.HashMap;
import java.util.Map;
import java.lang.Object;
public class grafo implements Serializable {
private static final long serialVersionUID = 1L;
public static Map<String,Double> p = new HashMap<String,Double>();
public static List<String> lx = new ArrayList<String>();
public static List<String> ly = new ArrayList<String>();
public static List<String> tab = new ArrayList<String>();
public int k;
public boolean liga;
public String combo[];
public grafo()
{
p.put("A",235.000);
p.put("B",321.000);
p.put("C",87.000);
p.put("D",102.000);
p.put("E",46.500);
p.put("F",647.000);
lx.add("A");
lx.add("B");
lx.add("C");
lx.add("D");
lx.add("E");
lx.add("F");
ly.add("A");
ly.add("B");
ly.add("C");
ly.add("D");
ly.add("E");
ly.add("F");
tab.add(ly.get(0) +","+ lx.get(2));
tab.add(ly.get(1) +","+ lx.get(2));
tab.add(ly.get(1) +","+ lx.get(5));
tab.add(ly.get(2) +","+ lx.get(0));
tab.add(ly.get(2) +","+ lx.get(1));
tab.add(ly.get(2) +","+ lx.get(3));
tab.add(ly.get(3) +","+ lx.get(2));
tab.add(ly.get(3) +","+ lx.get(4));
tab.add(ly.get(4) +","+ lx.get(3));
tab.add(ly.get(4) +","+ lx.get(5));
tab.add(ly.get(5) +","+ lx.get(1));
tab.add(ly.get(5) +","+ lx.get(4));
}
public List MostraGrafo()
{
return tab;
}
public int sizeLista()
{
return lx.size();
}
public List lista()
{
return lx;
}
public boolean Ligacoes(String y,String x)
{
String z = y +","+ x;
k = 0;
for(int i=0;i < tab.size();i++)
{
if(z.equals(tab.get(i)))
k = 1;
}
if(k > 0)
return true;
else
return false;
}
public void AdicionaVertice(String x,Double y,String z)
{
p.put(x,y);
lx.add(x);
ly.add(x);
tab.add(x+","+z);
}
public void RemovoVertice(String x)
{
p.remove(x);
}
public static void main(String args[])
{
grafo g = new grafo();
System.out.println(g.sizeLista());//g.Ligacoes("A","C"));
}
}
Lista estatica
2 Respostas
Nao sei se entendi bem, mas o codigo que esta no construtor é o codigo que inicializa as listas staticas. o problema é que a cada instancia que vc cria ele incrementa as informaçoes da lista statica dobrando os dados. assim quando vc cria a primeir instancia ele tem o valor size = 6 na segunta instancia size = 12, na terceira instancia 18, isso por que para cada instancia ele adiciona os valores “de incializaçao novamente”.
se for isso, acredito que vc pode usar um bloco static pra iniciarlizar as listas estaticas. o bloco static é executado uma unica vez independente de quantas instancias da classe vc criar. ele é perfeito prar fazer essas atividades de inicializaçao de variaveis static.
public Classe
{
public static int instancesClass;
static
{
Classe.instancesClass = 100; //inicializa a variavel
}
public Classe()
{
Classe.instancesClass++;
}
}
com esse codigo de exemplo vc pode criar varias instancias e perceberá que a inicialização ocorre uma unica vez. Assim para primeira instancia vc terá o valor 101 para Classe.instancesClass e na segunda instancia terá o valor 102… que só é incrementado pelo construtor
espero que isso ajude…
vlw ajudou e muito