最佳存储方法(int xIndex、int yIndex、View view、String cellName)
Posted
技术标签:
【中文标题】最佳存储方法(int xIndex、int yIndex、View view、String cellName)【英文标题】:best approach to store (int xIndex, int yIndex, View view, String cellName) 【发布时间】:2022-01-09 00:38:22 【问题描述】:我正在开发小型 android 库,出于特定原因,我需要存储这样的结构 (
int xIndex - 表格结构中视图的 x 索引 int yIndex - 类表结构中视图的 y 索引 视图视图 - 视图本身 String cellName - 这是一个单元格的名称,坐标为 x, y,采用类似表格的结构所以我以后可以通过 (xIndex,yIndex) 或它的 cellName 以下列方式处理存储的视图:
View view = manager.getCell(xIndex, yIndex);
//or
View view = manager.getByName(cellName);
我实际上希望这个实现尽可能简单,所以任何关于我可以使用什么样的 Map 或类似的东西来通过一对整数或字符串来寻址对象的想法?我不想创建像下面这样的中间类
CellDefinition(int x, int y, String cellName)
所以以后它可以像这样 MapObject<Integer[2], String, View>
所以我以后可以通过
new[]x,y
或字符串 "cellName"
并通过这些索引检索 View 对象。
欢迎提出任何意见
【问题讨论】:
在这里使用中间类将在未来为您提供更多的灵活性。如果您将来要添加或删除字段,那么痛苦会少很多 您为什么不想创建一个代表文字软件实体的类?这就是他们的目的 【参考方案1】:我想你可以做类似List<Map<String, Object>>
的事情,其中列表是 Map 的集合,它们代替了新的类对象。例如,您的键值对可能类似于 "Name" : "CellName", "x" : 1, "y" : 2, "View" : viewObj
从那里,您可以使用流和生成的地图来选择您的视图:
List<HashMap<String, Object> list = ...
//By name
HashMap<String, Object> selectedMap = list.stream()
.filter(m -> m.get("Name").equals("SomeName"))
.findFirst()
.orElse(null);
//Or by point
HashMap<String, Object> selectedMap = list.stream()
.filter(m -> m.get("x") == 1 && m.get("y") == 2)
.findFirst()
.orElse(null);
View view = (View) selectedMapBy.get("View");
不过,到那时,执行List<CustomClass>
之类的操作可能会更容易,这样您就不必处理键和“对象”类型:
List<CellDefinition> list = ...
CellDefinition cell = list.stream()
.filter(c -> c.getName().equals("SomeName"))
.findFirst()
.orElse(null);
View view = cell.getView();
【讨论】:
以上是关于最佳存储方法(int xIndex、int yIndex、View view、String cellName)的主要内容,如果未能解决你的问题,请参考以下文章
C ++:这两种将数字写入矩阵的方式之间在速度上有显着差异吗?
错误:“最佳重载方法匹配”和“参数 1:无法从 'string' 转换为 'int'”