我正在编写一个比较两个数据集的java程序,每个数据集包含相同类型的数据。数据类型基本上是类,包含字符串,整数和字符串[]。我们将此类Foo
和数据集a
和b
称为。对于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)
}