将Objective-C结构数组转换为Java

我正在将一些Objective-C移植到Android。 源应用程序在结构数组中存储了大量数据,并且具有一些高性能方法来对数组进行查找和对结果集进行计算,以便在用户在图形上拖动指针时对图形上的点进行近实时分析。他们的手指。 计算结果用于更新图表周围的各种视图中的值。

这是一个包含大约7.5k结构的例子。

structDataFeedReduced gFeedData[7662] = { 1233,@"",12.466667,26.166667,@"AARS",0,0,0,1.000000,-1,1,1, 6760,@"",15.816667,41.033333,@"DCTT",1,1,1,12.000000,-1,1,2, 8117,@"",44.016667,144.283333,@"SKDD",2,1,2,9.000000,-1,1,1, 8666283,@"WS",42.676666,40.006668,@"DLCC",3,2,3,-5.000000,-1,1,6, ... ... ... }; 

我的问题是在Java中静态存储这些数据的最佳方法是什么?

我已经尝试过以下性能不足,无论是在加载时还是在运行时为计算提供数据。

  1. SQL Lite。
  2. 从存储在资产中的文件中读取。
  3. 静态存储为字符串数组,然后在初始化时将它们处理为对象,使用反映Objective-C结构的类(例如,从字符串数据转换为int,bools,double等)
  4. 存储在arrays.xml中,然后在初始化时将它们处理为对象

我还可以尝试其他任何模式吗? 如果没有,那么我会赞成上面的3或4,因为我将牺牲一些加载和初始化性能以获得良好的运行时响应。

我的后盾是使用JNI将其推送到本机代码中。 也许这是唯一有意义的选择?

谢谢…

您可以将该数据保存为代码。 您可以定义StructDataFeedReduced类,然后将初始化代码更改为:

 static StructDataFeedReduced[] gFeedData = new StructDataFeedReduced[] { new StructDataFeedReduced(1233,"",12.466667,26.166667,"AARS",0,0,0,1.000000,-1,1,1), new StructDataFeedReduced(6760,"",15.816667,41.033333,"DCTT",1,1,1,12.000000,-1,1,2), ... } 

StructDataFeedReduced的构造StructDataFeedReduced可以根据需要将数据存储在内部字段中。