gpt4 book ai didi

java - 关于如何构建这些数据的建议?

转载 作者:行者123 更新时间:2023-12-01 18:58:04 25 4
gpt4 key购买 nike

我收到此数据,它是通过网络传输的,因此需要在本地缓存。

数据格式为:

Action (String)
Direction (String)
Frame (int)
X,Y (Point or int,int)

用法基本上是:

Point myPoint = data.get(action).get(direction).get(frame);
myPoint.x; // do something with x and y

我尝试了一个巨大的 HashMap 类型的结构:

HashMaP<String, HashMap<String, HashMap<int, Point>>> 

它可以工作,但丑陋且容易出错。

我还尝试将其拆分为类,这很有效;但需要大量的内务代码。

任何人都知道这个数据结构叫什么,也许我可以谷歌一下。

有什么建议吗?

最佳答案

“巨大的 hashmap 类型的结构”中隐含的是实体之间的关系:

  • action 是一个索引“多个”方向的字符串
  • direction 是一个索引“许多”帧的字符串
  • frame 是一个索引“许多”点的数字
  • 点是一个结构

一种简单的方法可能是定义一个包含“action”、“direction”和“frame”的“key”对象,并在 Map 结构中使用它,例如

class PointKey {
String action, direction;
int frame;
PointKey(String action, String direction, int frame { .. init etc etc }

...

根据使用特征,您可能需要重写hashCode以基于三部分 key 提供一些“合理”的唯一值,或者实现Comparable(如果您')我们预计会有大量这些值,并且您预计阅读它们的次数多于编写它们的次数。

然后你定义你的Map:

Map<PointKey,Point> data = new HashMap<PointKey,Point>();

Map<PointKey,Point> data = new TreeMap<PointKey,Point>();

取决于您选择的方法。

如果您要创建大量这些 key ,另一个问题是创建新 key 来随机访问它们的开销,在这种情况下,您可能喜欢使用享元,例如

...
// PointKey instance that is retained and used again and again, purely for 'access' purposes
dataKey.setIdentifiers(myAction, myDirection, myFrame);
Point myPoint = data.get(dataKey)

关于java - 关于如何构建这些数据的建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13304181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com