java - 查找和更改元组值
问题描述
我已经像这样制作了一些元组:
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");
}
我正在尝试setVariable()
在同一类中使用一个方法,该方法将接收 2 个字符串(例如,“light”和“on”),并使用第一个字符串来搜索元组的第一个变量以及匹配时发现它会用第二个字符串替换第二个变量。我尝试将元组添加到 ArrayList 但我无法让搜索部分工作。有没有办法通过 aArrayList
或 a来实现这一点HashSet
?
元组类:
public static 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 + ")";
}
}
解决方案
更简单的方法是HashMap
按照 hev1 的建议使用您的要求。但是,如果您仍然想使用Tuple
该类,那么这是一种方法。
将 getter 方法添加到您的Tuple
类
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 中收集所有元组List
并将其传递给您的setVariable
方法。在此方法中,只需检查给定eventName
值是否存在于任何元组中。如果是,则从列表中删除该元组并创建一个具有给定状态的新元组并将其添加回列表中。像这样的东西:
void setVariable(String eventName, String status, List<Tuple>tuples) {
boolean isRemoved = tuples.removeIf(tuple -> tuple.getEventName().equals(eventName));
if(isRemoved) {
Tuple tuple = new Tuple(eventName, status);
tuples.add(tuple);
}
}
希望这可以帮助。
推荐阅读
- java - 从 Spring Boot 程序调用的 Oracle 存储过程不在数据库中进行任何更改
- javascript - 使用正则表达式验证字符串
- bash - 如何选择 grep 输出的某个部分?
- kubernetes-helm - Helm 不使用 values.yaml 文件
- json - Electron-Packager 什么都不做
- django - Django jinja 值未正确传递到 iframe url(打开街道地图)
- vim - 有没有办法通过按 Escape 来取消 fzf
- javascript - 在引导的 ejs 表单上显示服务器端验证错误消息
- javascript - 它不会让我更改昵称 discord.js
- json - Unity3D - 我如何解析嵌套的重复 Json