1

実稼働システムをシミュレートしようとしていますが、値を取得して別のクラスにある TreeMap に渡すのに問題があります。

私が何をしようとしているのかを簡単に説明するために、値 (システムに追加される部品の数) を保存するためのいくつかのテキストパネルを持つパネルと、ワークステーションの数とパラメーターを保存するテーブルを作成します。システムが設定されます。実行すると、これらの値はさらに処理するために保存する必要があります。

以前の質問で、次のような値を格納するために TreeMaps を使用することをお勧めしました。

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;
    }
} 

これは出力しています:

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

私は2つの問題を抱えています。最初に、これは正しい方法ですか?

次に、たとえば t.keySet() はこれまでのところ何も取得しないため、後で L クラスの TMap からパラメーターを取得するにはどうすればよいでしょうか。

ご協力いただきありがとうございます。

4

1 に答える 1

1

まず、TMap.Station を呼び出すたびに新しい TreeMap を作成しています。TreeMap をフィールドとして配置し、代わりにコンストラクターで初期化してみてください。これにより、2 つのキーと値のペアを含むマップが取得されます。

2 番目の質問に答えると、TMap をフィールドにして、アクセスして設定するメソッドを作成できない理由はありますか? 関数でのみインスタンス化すると、その関数が終了するとすぐに消えます(さらに、そのスコープはその関数内にのみあります)。

編集:コメントに応えて...どうですか

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;
    }
}
于 2012-07-11T16:17:44.797 に答える