Java 查找和更改元组值
我已经制作了一些元组,如下所示:Java 查找和更改元组值,java,arraylist,tuples,Java,Arraylist,Tuples,我已经制作了一些元组,如下所示: public GreenhouseControls() { light = new Tuple<>("light", "off"); fans = new Tuple<>("fans", "off"); water = new Tuple<>("water", "off&
public GreenhouseControls() {
light = new Tuple<>("light", "off");
fans = new Tuple<>("fans", "off");
water = new Tuple<>("water", "off");
power = new Tuple<>("power", "on");
window = new Tuple<>("window", "good");
thermostat = new Tuple<>("thermostat","day");
}
可以使用创建键和值之间的关系。在您的情况下,a将是合适的,并将使您的代码更加简洁和易于阅读。您可以使用设置键的值,并使用检索与键关联的值
final Map<String, String> map = new HashMap<>();
map.put("light","off");
//Etc..
//Get value
String light = map.get("light");//"off"
//Update value
map.put("light","on");
light = map.get("light");//"on"
可以使用创建键和值之间的关系。在您的情况下,a将是合适的,并将使您的代码更加简洁和易于阅读。您可以使用设置键的值,并使用检索与键关联的值
final Map<String, String> map = new HashMap<>();
map.put("light","off");
//Etc..
//Get value
String light = map.get("light");//"off"
//Update value
map.put("light","on");
light = map.get("light");//"on"
我已经实现了如何对对象的单个变量执行此操作。i、 e.“光”。 是否有理由需要将冗余变量捕获为元组
public class GreenhouseControls {
private String light;
public String getLightStatus() {
return light;
}
public void setLightStatus(String input)
{
if(input == "on" || input == "off")
this.light = input;
}
public static void main(String[] args)
{
GreenhouseControls controls = new GreenhouseControls();
controls.setLightStatus("on");
System.out.println(controls.getLightStatus());
controls.setLightStatus("off");
System.out.println(controls.getLightStatus());
}
}
我已经实现了如何对对象的单个变量执行此操作。i、 e.“光”。 是否有理由需要将冗余变量捕获为元组
public class GreenhouseControls {
private String light;
public String getLightStatus() {
return light;
}
public void setLightStatus(String input)
{
if(input == "on" || input == "off")
this.light = input;
}
public static void main(String[] args)
{
GreenhouseControls controls = new GreenhouseControls();
controls.setLightStatus("on");
System.out.println(controls.getLightStatus());
controls.setLightStatus("off");
System.out.println(controls.getLightStatus());
}
}
更简单的方法是按照hev1的建议,针对您的需求使用
HashMap
。但是如果您仍然想使用Tuple类,那么这里有一种方法
向元组添加getter方法
public class Tuple<A,B> {
public final A eventName;
public final B status;
public Tuple(A eventName, B status) {
this.eventName = eventName;
this.status = status;
}
public String toString() {
return "(" + eventName + ", " + status + ")";
}
public A getEventName() {
return eventName;
}
public B getStatus() {
return status;
}
}
希望这能有所帮助。更简单的方法是按照hev1的建议,根据您的需求使用HashMap
。但是如果您仍然想使用Tuple类,那么这里有一种方法
向元组添加getter方法
public class Tuple<A,B> {
public final A eventName;
public final B status;
public Tuple(A eventName, B status) {
this.eventName = eventName;
this.status = status;
}
public String toString() {
return "(" + eventName + ", " + status + ")";
}
public A getEventName() {
return eventName;
}
public B getStatus() {
return status;
}
}
希望这能有所帮助。也许a更合适?@Sweeper我对HashMap不太熟悉(但我在谷歌上搜索了一下,所以我想我已经掌握了它的基本知识),所以你的意思是将元组存储在HashMap中,还是使用HashMap而不是元组?为什么要使用HashMap?或者任何关于这个问题的列表数据结构?我读过Java面向对象的知识,并使用了常见的模式,getter/setter方法来实现这一点?您是否使用groovy.lang.Tuple
?@Jesse但即使我在getter中使用getter/setter,我也需要一种方法来检查每个元组中我要查找的字符串,因此我需要一种方法来查看每个元组,这需要一个列表或哈希映射,对吗?也许一个更合适?@Sweeper我不是真的熟悉HashMap(但我在谷歌上搜索了一下,所以我想我已经掌握了它的基本知识),所以你是说在HashMap中存储元组还是使用HashMap而不是元组?为什么要使用HashMap?或者任何关于这个问题的列表数据结构?我读过Java面向对象的知识,并使用了常见的模式,getter/setter方法来实现这一点?您是否使用groovy.lang.Tuple
?@Jesse但即使我在getter中使用getter/setter,我也需要一种方法来检查每个元组中我要查找的字符串,因此我需要一种方法来查看每个元组,这需要一个列表或哈希映射,对吗?这个答案看起来不错,而且确实会让人满意我的生活更轻松,但我担心,由于这都是任务的一部分,我不得不使用元组是不可避免的。除了元组之外,还有其他方法可以做同样的事情吗?我正在尝试打印元组存储在其中的数组,但如果打印状态不起作用,它看起来很像。不应System.out.println(成员)
work?@dxbh0517您还有其他问题或顾虑吗?没有,我发现我做错了什么,谢谢大家的帮助。这个答案看起来不错,确实会让我的生活更轻松,但我担心,既然这都是作业的一部分,我不得不使用元组,那么除了使用元组之外,还有其他方法可以做同样的事情吗?我很抱歉试图打印元组存储在其中的数组,但如果打印状态不起作用,则看起来很糟糕。System.out.println(成员)
不应该工作吗?@dxbh0517您还有其他问题或顾虑吗?没有,我发现我做错了什么感谢所有的帮助input==“on”| input==“off”
可能导致错误,input==“on”| input==“off”
可能导致错误,我还没有试过你的答案,但我认为它会起作用,但不会更容易。我想没有listuples
作为setVariable
的输入,因为只有一个列表,如果我在类中声明它,我可以在setVariable
中使用它。或者这行不通?@dxbh0517是的。如果希望在类级别使用单个列表,则无需将其传递给setVariable
方法。由于该方法可以访问列表,我还没有尝试您的答案,但我认为它会起作用,但不会更容易,我想没有listuples
作为setVariable
的输入,因为如果我在类中声明它,将只有一个列表,我可以在setVariable
中使用它。或者这行不通?@dxbh0517是的。如果希望在类级别使用单个列表,则无需将其传递给setVariable
方法。因为该方法可以访问列表