Я работаю над поисковым/организационным алгоритмом. Я использую несколько enum
, чтобы определить каждую часть данных, которую я хотел бы организовать. Например:Как сравнить с абстрактными перечислениями?
enum CarType implements SearchFactor {
CAR, SUV, TRUCK, SEMI, LIMO;
@Override public SearchFactor getSearchFactor() { return this; }
}
и
enum PaintColor implements SearchFactor {
BLACK, WHITE, BLUE, GRAY, RED;
@Override public SearchFactor getSearchFactor() { return this; }
}
где SearchFactor
является:
interface SearchFactor { }
и класс выборка данных будет:
class Vehicle {
CarType type = CarType.CAR;
PaintColor color = PaintColor.BLACK;
}
Теперь для организации части, Я просто создаю массив inc inc luded SearchFactor
и добавьте перечисление того, что SearchFactor
Я хотел бы алгоритм следовать. Это делается путем постепенной ходьбы по массиву от Vehicle
и сравнивая Vehicle
s type
и color
с массивом включенных SearchFactor
s. Например:
Vehicle[] getVehicleFromSearchFactor(SearchFactor[] factors) {
ArrayList<Vehicle> factoredVehicles = new ArrayList<Vehicle>();
for (Vehicle v : getListOfVehicles()) {
for (SearchFactor f : factors) {
if (v.type == f || v.color == f) {
factoredVehicles.add(v);
break;
}
}
}
return factoredVehicles;
}
Это хорошая практика? Это слишком абстрактно?
Ya, осознал, что точка (недостаток) «getearchFactor» во время обеда. Что вы подразумеваете под индексированием? – AedonEtLIRA
http://en.wikipedia.org/wiki/Index_(database) –
Спасибо за ссылку, это было полезно. Последнее, если вы не возражаете. Есть ли у вас какие-либо предложения о том, как оптимизировать поиск, чтобы лучше, чем O (N * SF)? – AedonEtLIRA