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
方法。因为该方法可以访问列表