2012-07-11 3 views
1

Я пытаюсь имитировать производственную систему, и теперь у меня возникают проблемы с получением и передачей значений TreeMap, расположенных в другом классе.Как передать и получить значения TreeMap в другом классе?

Чтобы объяснить, что я намереваюсь сделать вкратце, я создам панель, в которой у меня будут некоторые текстовые поля для сохранения значений (для количества деталей, добавляемых в систему) и таблицы, в которой число и параметры будут установлены рабочие станции в системе. Когда я запускаю его, эти значения должны храниться для дальнейшей обработки.

На предыдущий вопрос я рекомендовал использовать Древовидные карты для хранения этих значений, что-то вроде:

Station[num][type][avg_time][posx][posy][state] 
Part[num][type][state] 

Это то, что я закодированы до сих пор:

L.java

import java.awt.*; 
import javax.swing.*;  

public class L extends JFrame { 

    public static void main(String[] args) { 


     SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      L l = new L(); 

      TMap t = new TMap(); 
      t.Station("num", 127); 
      t.Station("type", 3); 
      //System.out.println("Entryset: " + t.keySet()); 
      //System.out.println("Entryset: " + t.Station() + "\n"); 
     } 
     }); 

    } 

} 

TMap.java

import java.util.*; 

public class TMap { 
    //public TreeMap <String, Integer>St = new TreeMap<String, Integer>(); 
    public int num_atrib = 6; 
    public static TreeMap<String, Integer> Station(String s,int i) { 
     TreeMap <String, Integer>St = new TreeMap<String, Integer>(); 
     St.put(s,i); 
     System.out.println("Now the tree map Keys: " + St.keySet()); 
     System.out.println("Now the tree map contain: " + St.values()); 
     return St; 
    } 
} 

Это outputing:

Now the tree map Keys: [num] 
Now the tree map contain: [127] 
Now the tree map Keys: [type] 
Now the tree map contain: [3] 

У меня есть две проблемы, во-первых, это правильный способ сделать это, потому что я вижу карту outputed должно быть [число, тип] и клавиши [127, 3] право?

И, во-вторых, как я могу позже получить параметры из TMap в классе L, поскольку t.keySet(), например, ничего не получит?

Надеюсь, что я дал понять, заблаговременно за вашу помощь.

ответ

1

Прежде всего, вы создаете новую TreeMap каждый раз, когда вы вызываете TMap.Station. Попробуйте поместить TreeMap в качестве поля и инициализировать его в конструкторе. Это должно дать вам карту с двумя парами ключ/значение.

Отвечая на ваш второй вопрос, есть ли причина, по которой вы не можете сделать поле TMap и просто создать методы для доступа и установки? Если вы только создадите экземпляр в функции, он исчезнет, ​​как только эта функция выйдет (плюс ее область действия будет только в этой функции).

EDIT: В ответ на комментарий ... что

EDIT EDIT: Добавление неровных контуров для добытчиков. Если вы хотите что-то вроде put(), оно будет работать аналогичным образом.

import java.awt.*; 
import javax.swing.*; 
import java.util.Set; 

public class L extends JFrame { 
    private TMap t; 

    public L() { 
     t = new TMap(); 
    } 

    public Set<String> getKeySet() { 
     return t.getKeySet(); 
    } 

    public Integer get(String s) { 
     return t.get(s); 
    } 

    // your main method as before 
} 

и

import java.util.*; 

public class TMap { 
    private TreeMap<String, Integer> St; 
    private int num_atrib = 6; 

    public TMap() { 
     St = new TreeMap<String, Integer>(); 
    } 

    public Set<String> getKeySet() { 
     return St.keySet(); 
    } 

    public Integer get(String s) { 
     return St.get(s); 
    } 

    public static TreeMap<String, Integer> Station(String s,int i) { 
     St.put(s,i); 
     System.out.println("Now the tree map Keys: " + St.keySet()); 
     System.out.println("Now the tree map contain: " + St.values()); 
     return St; 
    } 
} 
+0

Мне жаль спрашивать, но как я могу поставить TreeMap как поле? Я пытался выяснить, как создавать методы для доступа к этой карте, но не совсем понял, как это сделать! Прошу прощения за эти вопросы, но я до сих пор немного новичок в этом! –

+1

Добавил грубую схему того, о чем я говорил. Надеюсь, это поможет. –

+0

Спасибо, это действительно помогло. Что делать, если мне нужно получить выходные данные (скажем, keySet, значения и другие) вне класса TMap? Я понимаю, что вы, вероятно, делаете это с помощью методов, которые вы упомянули, но я не понимаю, как их построить! –

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