Java:获取符合条件的数组的子集

时间:2012-03-02 10:27:23

标签: java arrays java-me vectorization

我有一个数组数组。 float[][] Test

例如

  {  {433801.000f,335601.000f,5},
     {433821.000f,335631.000f,5},
     {433811.000f,335671.000f,5}  };

如何获取此数组(或数组数组)的子集,其中值符合条件。

例如Test[i][0] > 40000Test[i][1] + Test[i][2] < 350000

我显然可以遍历列表。但是当阵列数量巨大时,这将非常缓慢。

我如何以矢量化方式执行此操作。

如果这会导致任何限制,我也会使用JavaME。但JavaSE解决方案也很有见地,并且希望在JavaME中工作。

3 个答案:

答案 0 :(得分:5)

除非您存储有关数据的更多信息,否则没有迭代就无法做到。

我建议除了存储完整数据之外,对于每个新记录,您都要根据条件对其进行测试,如果确实如此,请将项目引用保存在另一个数组中(好吧,Vector对两者都更好其中除非存储真的紧。)

然后,当您想要所有符合条件的项目时,只需查找第二个“数组”中的所有引用。这大致是一些数据库查询的优化方式。查询成本降低,但代价是插入和存储成本较高。

答案 1 :(得分:2)

我认为迭代整个阵列并测试这些条件与其他任何方式一样快。好处是它实施起来非常简单。你对阵列的期望有多大?如果,在最坏的情况下,它只有几千行,你会没事的:)。

答案 2 :(得分:1)

避免线性扫描的唯一方法是以排序的方式存储数据。使用某种树结构可能是快速查找的前进方向。这意味着不将数据存储在数组中,这可能会违反您的内存要求,但这是权衡。