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