Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何向另一个类上的树映射传递和获取值?_Java - Fatal编程技术网

Java 如何向另一个类上的树映射传递和获取值?

Java 如何向另一个类上的树映射传递和获取值?,java,Java,我试图模拟一个生产系统,但现在我很难获取值并将值传递给位于不同类上的树映射 为了简单地解释我打算做什么,我将创建一个面板,其中我将有一些文本面板来保存值(用于添加到系统中的零件数量)和一个表,其中将设置系统上工作站的数量和参数。当我运行它时,应该存储这些值以供进一步处理 在前面的一个问题上,有人建议我使用树形图来存储这些值,例如: Station[num][type][avg_time][posx][posy][state] Part[num][type][state] 这是我到目前为止编写的

我试图模拟一个生产系统,但现在我很难获取值并将值传递给位于不同类上的树映射

为了简单地解释我打算做什么,我将创建一个面板,其中我将有一些文本面板来保存值(用于添加到系统中的零件数量)和一个表,其中将设置系统上工作站的数量和参数。当我运行它时,应该存储这些值以供进一步处理

在前面的一个问题上,有人建议我使用树形图来存储这些值,例如:

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;
    }
} 
我有两个问题,首先,这是正确的方法吗,因为我看到输出的映射应该是[num,type]和键[127,3],对吗

其次,我以后如何从L类的TMap中获取参数,因为例如t.keySet()到目前为止无法检索任何内容


希望我说清楚,提前感谢您的帮助。

首先,您每次呼叫TMap.Station时都会创建一个新的树状图。尝试将树映射作为字段并在构造函数中初始化它。这将得到包含两个键/值对的映射

回答你的第二个问题,你有什么理由不能把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.awt.*;
导入javax.swing.*;
导入java.util.Set;
公共类L扩展了JFrame{
私人TMap t;
公共图书馆({
t=新的TMap();
}
公共集getKeySet(){
返回t.getKeySet();
}
公共整数get(字符串s){
返回t.get(s);
}
//你的主要方法和以前一样
}

import java.util.*;
公共类TMap{
私人树桩街;
私有int num_atrib=6;
公共TMap(){
St=新树映射();
}
公共集getKeySet(){
返回St.keySet();
}
公共整数get(字符串s){
返回圣吉;
}
公共静态树映射站(字符串s,int i){
圣普特(s,i);
println(“现在是树映射键:+St.keySet());
println(“现在树映射包含:“+St.values()”);
返回St;
}
}

首先,每次调用TMap.Station时都要创建一个新的树状图。尝试将树映射作为字段并在构造函数中初始化它。这将得到包含两个键/值对的映射

回答你的第二个问题,你有什么理由不能把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.awt.*;
导入javax.swing.*;
导入java.util.Set;
公共类L扩展了JFrame{
私人TMap t;
公共图书馆({
t=新的TMap();
}
公共集getKeySet(){
返回t.getKeySet();
}
公共整数get(字符串s){
返回t.get(s);
}
//你的主要方法和以前一样
}

import java.util.*;
公共类TMap{
私人树桩街;
私有int num_atrib=6;
公共TMap(){
St=新树映射();
}
公共集getKeySet(){
返回St.keySet();
}
公共整数get(字符串s){
返回圣吉;
}
公共静态树映射站(字符串s,int i){
圣普特(s,i);
println(“现在是树映射键:+St.keySet());
println(“现在树映射包含:“+St.values()”);
返回St;
}
}

很抱歉要问,但如何将树状图作为字段?我试图弄清楚如何创建方法来访问和设置该映射,但没有弄清楚如何!对于这些问题我很抱歉,但我对这个问题还是有点陌生!添加了我所说内容的大致轮廓。希望对你有所帮助。添加了getKeySet()和get()方法来更好地解释我的意思。如果你想设置值,你也可以用同样的方法定义一个put()方法。将它设为静态意味着你需要将它涉及的所有内容都设为静态,这绝对不是你想要的。每个字段对于类的特定实例都是唯一的,所以我认为它不应该是静态的。另外,通常最好将所有字段保持为私有。将它们公开意味着您可以直接执行类似于t.St.keySet()的操作,但公开这么多类通常不是一个好主意;除非我知道你是如何使用树形图的,否则我真的帮不了你。提出另一个更好地描述您如何使用TreeMap的问题,并寻求帮助解决该问题。其他用户可以提供他们的建议,也许有人会想到一些对你有帮助的东西。很抱歉,我要问一下,但是我怎样才能把树状图作为一个字段呢?我试图弄清楚如何创建方法来访问和设置该映射,但没有弄清楚如何!对于这些问题我很抱歉,但我对这个问题还是有点陌生!添加了我所说内容的大致轮廓。希望对你有所帮助。添加了getKeySet()和get()方法来更好地解释我的意思。如果你想设置值,你也可以用同样的方法定义一个put()方法
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;
    }
}