@Override
public Collection<Dish> getDishesContaining(Collection<Ingredient> ingredients) throws DatabaseException {
Collection<Dish> result = new ArrayList<>();
for (Dish currentDish : this.getAll()) {
if (currentDish.containsIngredient(ingredients)!=0) {
result.add(currentDish);
}
}
return result;
}
Обзор:Сортировка списка после вставки
Dish -> Парам:
ArrayList<Ingredient> ingredients
Dish -> Функцион:
containsIngredient(Collection<Ingredient> ingredients) : int
(возвращает Int процент howmany ингредиенты данная коллекция имеет с тарелка)
Пример:
Для заданных ингредиентом Коллекция = [X, Y, Z]
блюду = [Ингредиенты: [X, Y, Z]] ->
dishA.containsIngredient(ingredientCollection)
= 1тарелка B = [Ингредиенты: [W, X, Y, Z]], ->
dishB.containsIngredient(ingredientCollection)
= 0,75D ish C = [Ингредиенты: [U, V, W]]; ->
dishC.containsIngredient(ingredientCollection)
= 0
Вопрос
Я хочу, чтобы вернуть коллекцию всех блюд, которые содержат указанные ингредиенты упорядочены с теми, которые имеют самый высокий процент общего ингредиенты сначала. Я подумывал написать класс Collection, в который я добавляю дополнительный параметр для функции add. Но это, кажется, довольно далеко. Я что-то пропустил?
http://stackoverflow.com/questions/6957631/sort-java-collection –
Обратите внимание, что процент не является параметром. Блюда. –
Затем создайте DishWrapper, который включает процент и сравнивает его (как показано в ссылке, помещенной Анной). После сортировки списка DishWrapper вы можете «развернуть» в обычный список блюд. – vanOekel