如何为arraylist项指定权重值?JAVA

如何为arraylist项指定权重值?JAVA,java,arraylist,Java,Arraylist,我有一个arraylist,我想给每个arraylist项目分配权重值,然后把它们的权重加起来,比如牛奶的重量是5糖的重量是3等等。 那么,返回这些权重之和的公式是什么呢 List<Ingredient> ing = new ArrayList<Ingredient>(); public class Ingredient { private String name; private String quantity; public Ingre

我有一个arraylist,我想给每个arraylist项目分配权重值,然后把它们的权重加起来,比如牛奶的重量是5糖的重量是3等等。 那么,返回这些权重之和的公式是什么呢

List<Ingredient> ing = new ArrayList<Ingredient>();



public class Ingredient {

    private String name;
    private String quantity;

  public  Ingredient(){

    }

    public Ingredient(String name,String quantity){
        this.name=name;
        this.quantity=quantity;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return name;
    }

    public String getQuantity() {
        return quantity;
    }

    public void setQuantity(String quantity) {
        this.quantity = quantity;
    }


}
List ing=new ArrayList();
公共类成分{
私有字符串名称;
私有字符串数量;
公共成分(){
}
公共成分(字符串名称、字符串数量){
this.name=name;
这个。数量=数量;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
@凌驾
公共字符串toString(){
返回名称;
}
公共字符串getQuantity(){
退货数量;
}
公共无效设置数量(字符串数量){
这个。数量=数量;
}
}

因此,首先需要为配料类创建一个名为weight的字段。类似于你做的数量

private int weight;

public Ingredient(String name,String quantity,int weight){
        this.name=name;
        this.quantity=quantity;
        this.weight = weight;
    }

public int getWeight() {
        return weight;
    }

public void setWeight(int weight) {
        this.weight = weight;
    }
我假设您将通过构造函数设置它。 要求和,只需在列表中循环:

int sum = 0;  
for( Ingredient i : ing){
    sum+=i.getWeight();
}

是否要创建成分的数组列表?如果是,那么最好在主类中创建一个单独的方法来处理总重量的计算。请参阅下面的代码:

public class Main {
    private static int totalWeight(ArrayList<Ingredient> list) {
        int sum = 0;
        for (Ingredient i : list) {
            sum += i.getWeight();
        }
        return sum;
    }

    public static void main(String[] args) {
        ArrayList<Ingredient> list = new ArrayList<>();
        Ingredient a = new Ingredient("Onion", 2, 1);
        Ingredient b = new Ingredient("Potatoes", 3, 2);
        list.add(a);
        list.add(b);
        int totalWeightOfAllProducts = totalWeight(list);
        System.out.println(totalWeightOfAllProducts);
    }
}
公共类主{
私有静态整型总权重(ArrayList列表){
整数和=0;
用于(成分一:列表){
sum+=i.getWeight();
}
回报金额;
}
公共静态void main(字符串[]args){
ArrayList=新建ArrayList();
成分a=新成分(“洋葱”,2,1);
成分b=新成分(“土豆”,3,2);
列表.添加(a);
列表.添加(b);
所有产品的总重量=总重量(列表);
System.out.println(所有产品的总重量);
}
}

别忘了在配料类中添加重量属性

这还不清楚,“公式”实际上只是总和。我不知道如何处理重量值。你能给我建议吗@OliverCharlesworth为什么不在
成分中添加一个
重量
字段,然后在计算总重量时使用该字段?恐怕数量就是重量;)反正是为了糖。对于牛奶,你可以猜测它的体积,但通常糖是以重量来衡量的。这个问题很不清楚。呵呵,好吧,那你就不需要再修改这个类了。现在开始工作?谢谢limbo,但我想根据配料重量\
搜索配方(配方rn:list){boolean recipeMatched=false;for(ShoppingList r:shop){for(int i=0;i=2){result.add(rn)
您能将此代码添加到问题中吗?我不确定我是否理解您想要的内容。我想根据成分重量搜索配方,哪个配方具有向用户建议的更高重量值(stackoverflow.com/questions/37575625/…)请转到此链接并查看我的配方搜索方法和配方类@limboi想要根据成分重量搜索配方,哪个配方具有向用户建议的更高重量值()请转到此链接并查看我的配方搜索方法和配方类