排列复杂数据类型以进行快速部分匹配比较

时间:2013-12-13 20:39:06

标签: java data-structures dataset abstract-data-type

我正在编写一个比较两个数据集的java程序,每个数据集包含相同类型的数据。数据类型基本上是类,包含字符串,整数和字符串[]。我们将此类Foo和数据集ab称为。对于a中的每个项目,我需要找到b中与其最匹配的项目。

我的问题是速度 - 我在下面概述了伪代码,我现在正在做什么。你可以想象,它随着尺寸的增加不能很好地扩展(而且我的尺寸要大得多......)。如果有人能指出我更好的解决方案,我将非常感激。我知道排序数组,例如在字符串或int比较会大大提高速度,但由于我的数据类型更复杂,我不知道这可以在这里起作用。

Foo[] a = new Foo[...];
Foo[] b = new Foo[...];
for (item_a : a) {
   double bestMatch = 0;
   for (item_b : b) {
      double match = compareFoo(item_a,item_b);
      if (match > bestMatch) {
          bestMatch = match;
      }
   }
   //Do stuff with bestMatch - display, save etc.
}

private double compareFoo(Foo item_a, Foo item_b) {
   //Compare every element of a and b, 
   //return value between 0 (no match) and 1 (identical)
}

0 个答案:

没有答案