gpt4 book ai didi

java - 将整数映射到对象的最佳方法是什么?以对象作为键

转载 作者:行者123 更新时间:2023-12-01 18:10:05 25 4
gpt4 key购买 nike

嘿,这可能是一个愚蠢的问题,但是虽然我可以使用 put 函数将对象映射到整数:

product Tuna = new product(1, nutrientsIn);

product Milk = new product(0, nutrientsIn2);

HashMap<product, Integer> productQuantity = new HashMap<product, Integer>();

productQuantity.put(Tuna, 2);

productQuantity.put(Milk, 4);

Diet.totalNutrients(productQuantity);

如果我尝试使用对象的名称作为键来访问该值:

System.out.printf("%d\n", productQuantity.get(Milk));

我收到错误:找不到符号。我认为这意味着它正在寻找 Milk 变量。

这是解决此问题的正确方法吗?如果是,我该如何或是否有更好的方法。

最佳答案

  1. 错误:找不到符号

    • 您收到此消息是因为您在变量 MILK 的范围之外使用了它。
  2. 替代方式

    • 您可以为产品创建一个枚举
<小时/>

当前方法的代码

public class Sample {
public static void main(String[] args) {
Product Tuna = new Product(1, "nutrientsIn");

Product Milk = new Product(0, "nutrientsIn2");

HashMap<Product, Integer> productQuantity = new HashMap<Product, Integer>();

productQuantity.put(Tuna, 2);

productQuantity.put(Milk, 4);

// Diet.totalNutrients(productQuantity);

// Use this if in same block
System.out.printf("%d\n", productQuantity.get(Milk));
// Use this if in some other block (where getting the error)
Product makeMilkObject = new Product(0, "nutrientsIn2");
System.out.printf("%d\n", productQuantity.get(makeMilkObject));
}
}

class Product{
int key;
String nutrient;
Product(int key, String nutrient){
this.key = key;
this.nutrient = nutrient;
}

public int getKey() {
return key;
}

public String getNutrient() {
return nutrient;
}

@Override
public boolean equals(Object obj) {
return (this.key == ((Product)obj).getKey()) && (this.getNutrient().equals(((Product) obj).getNutrient()));
}

@Override
public int hashCode() {
return this.getKey();
}
}

关于java - 将整数映射到对象的最佳方法是什么?以对象作为键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60482388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com