我需要一个可以解决以下问题的Java程序:
1-它具有一个数据结构(DS)来表示以下数据,其中行和列由字符串索引,单元格值为布尔值。
因此,要访问第(i)行,我可以简单地说DS [“ Yi”]并访问第(i)行中的特定单元格(j),我可以说DS [“ Yi”,“ Xj”]
2-必须从类字段中填充列索引{“ X1”,“ X2”,“ X3”,...,“ Xn”}。例如,考虑以下类:
public class Test {
private String X1;
private String X2;
private String X3;
private String X4;
private String X5;
}
对于这个类,我的表的列将是{“ X1”,“ X2”,“ X3”,“ X4”,“ X5”}},如果我以后更新类Test以包括更多字段,让我们说“ X6”,则DS必须自动添加此新字段。
3-最后,我想将这些数据保存到{TXT,XML或JSON}文件中,以便每次运行代码时,它都可以从文件中读取值。
答案 0 :(得分:1)
我认为最简单的方法可能是要有一些约定,以便您可以在内部将已知的行和列标签转换为数字索引。然后,您可以使用普通的2D布尔数组。
如果您无法执行此操作,则一种选择是使用地图,如下所示:
Map<String, Map<String, Boolean>> grid = new HashMap<>();
// populate first row
grid.put("Y1", new HashMap<>());
grid.get("Y1").put("X1", true);
grid.get("Y1").put("X2", true);
grid.get("Y1").put("X3", false);
// ... other columns
grid.get("Y1").put("Xn", true);
答案 1 :(得分:1)
尝试使用这种方法。
N.B .:该代码未经测试。在这里,我在数组上都使用了int索引搜索,因为我假设列表"x1", "x2", "x3"
不一定要排列(也许可以尝试使用Map
)
public class SS {
public static void main(String[] args) {
//Used for indexing
List<String> listX = Arrays.asList("x1", "x2", "x3");
List<String> listY = Arrays.asList("y1", "y2", "y3");
//Used to fetch boolean value which is indexed arr[x][y] with the value defined in the class YourClass
YourClass[][] arr = new YourClass[listX.size()][listY.size()];
int i=0;
for (String y : listY) {
int j=0;
for (String x : listX) {
//Fill the array
arr[i][j] = new YourClass(new Random().nextInt(1), x, y);
j++;
}
i++;
}
//To get DS["x2", "y3"]
DS ds = new DS("x2", "y3");
i=0;
for (String y : listY) {
if(ds.getY().equals(y))
{
int j=0;
for (String x : listX) {
if(ds.getX().equals(x))
System.out.println(arr[i][j].toString());
j++;
}
}
i++;
}
}
}
//class to maintain index positions
class YourClass{
int a;
String x;
String y;
public YourClass(int a, String x, String y) {
this.a = a;
this.x = x;
this.y = y;
}
@Override
public String toString() {
return "YourClass{" +
"a=" + a +
", x='" + x + '\'' +
", y='" + y + '\'' +
'}';
}
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public String getX() {
return x;
}
public void setX(String x) {
this.x = x;
}
public String getY() {
return y;
}
public void setY(String y) {
this.y = y;
}
}
//class used to search the element
class DS {
String x;
String y;
public String getX() {
return x;
}
public void setX(String x) {
this.x = x;
}
public String getY() {
return y;
}
public void setY(String y) {
this.y = y;
}
public DS(String x, String y) {
this.x = x;
this.y = y;
}
}