如何在另一个类上传递和获取TreeMap的值?

时间:2012-07-11 15:45:28

标签: java

我正在尝试模拟生产系统,现在我无法获取并将值传递给位于不同类的TreeMap。

为了解释我打算简要介绍一下,我将创建一个Panel,我将在其中设置一些textpanels来保存值(用于添加到系统中的部件数量)以及一个表格,其中包含数量和参数。将设置系统上的工作站。当我运行它时,应存储这些值以供进一步处理。

在上一个问题中,我建议使用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]

我有两个问题,首先,这是正确的方法,因为我看到的地图输出应该是[num,type]和键[127,3]对吗?

其次,我怎样才能在L类中从TMap获取参数,因为t.keySet()例如目前还没有找到任何东西!

希望我明确表示清楚,先谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

首先,每次调用TMap.Station时都会创建一个新的TreeMap。尝试将TreeMap作为字段并在构造函数中初始化它。这应该会给你带有两个键/值对的地图。

回答你的第二个问题,是否有任何理由不能让TMap成为一个字段而只是创建访问和设置的方法?如果你只是在一个函数中实例化它,它会在函数退出后立即消失(加上它的范围只会在那个函数中)。

编辑:回应评论......怎么样

编辑编辑:为getter添加粗略轮廓。如果你想要像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;
    }
}