2015-10-15 4 views
2

Мне нужна помощь, создающая динамическую вершину в Java. Я получаю данные из базы данных MySQL, до сих пор у меня есть это:Java - динамически создавать вершину

String query = "SELECT * FROM coordinates"; 

Statement st = conn.createStatement();   
ResultSet rs = st.executeQuery(query);  
while (rs.next()) 
{ 
    int id = rs.getInt("id"); 
    String vert = Integer.toString(id); 

    //Which approach will work?   
    Vertex vert = new Vertex(vert);   
} 
st.close(); 

Это как вершина должна выглядеть так:

Vertex 1 = new Vertex("1"); 
Vertex 2 = new Vertex("2"); 
Vertex 5 = new Vertex("5"); 
Vertex 8 = new Vertex("8"); 
//...and so on... 

EDIT

Так что я сделал это, нормально:

Map<String, Vertex> map = new HashMap<>(); 
while (rs.next()){ 
    int id = rs.getInt("id"); 
    String id_vertex = Integer.toString(id);   
    map.put("X" + id, new Vertex(id_vertex));  
} 

Но теперь я должен создать свою вершину вправо ?

В конце концов, я должен был бы создать края также, потому что это нужно для Дейкстры Algorithm..so Я создаю края, как это:

X151.adjacencies = new Edge[]{new Edge(X3957,261),new Edge(X3589,194)}; 

Основной проблемой было то, что я получаю это ошибка: The code of method main(String[]) is exceeding the 65535 bytes limit

Имею ли я право, это решит мою проблему, или моя идея совершенно неправа?

+0

«Список» или «Карта» должны быть вашими. Но, судя по вашему вопросу, вы скорее не для «Карты» – SomeJavaGuy

ответ

0

Вы можете сделать это как комбинацию списка и набора. Например, проверьте этот ниже код:

int intArray[] = new int[3]; 
for (int i = 0; i < 3; i++) { 
    intArray[i] = 5; 
} 

List<Integer> lists = new ArrayList<Integer>(); 
for (int i = 1; i < 4; i++) { 
    lists.add(5); 
} 

Map<String, Integer> map = new HashMap<String, Integer>(); 
for (int i = 1; i < 4; i++) { 
    map.put("n" + i, 5); 
} 

В списке или карте вы можете использовать любой тип для хранения данных. Для вашего случая вы хотите сохранить вершину, чтобы использовать тип вершин вместо Integer или String.

1

Вы можете попробовать его с помощью Map

Map<String, Vertex> map = new HashMap<>(); 
for(int i = 0; i < str.length; i++) { 
    map.put("v" + i, new Vertex(str[i])); 
} 
0

Попробуйте отрендерить вершины в отдельном потоке.

//sql query 
ResultSet datas = ... 

Thread newThread = new Thread(
    Public Void run(){ 
      //process datas into verts 
      //for elem in data 
      ArrayList<Vert> list... 
      // add to list 

      Algorithm(list) 
    } 
} 

newThread.start(); 

Void Algorithm(ArrayList<..> data){ 

      //run algorithm here 
      //so on forth 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^