【问题标题】:How can I model one class having a instance-specific count of instances of another class?我如何为一个类建模,该类具有另一个类实例的特定实例计数?
【发布时间】:2023-01-19 02:10:42
【问题描述】:

如果我有两个不同的类别(例如,人员类别和商品类别),我如何表示每个人对每种商品的个人需求(一个数字)?

如果我初始化 person 类的 10 个实例,然后是 5 种不同类型的商品:每个人对每种商品都有自己的个人需求,但如果我只将商品类初始化为一个单独的类(所以我们将有在这个例子中有 5 个良好类别的实例),我如何为每个人的每个实例提供他们对 5 个良好实例中的每一个的特定需求?

我真的不知道如何用更清晰的语言来问这个问题,希望我足够具体,让你知道我想问什么。有问题请回复!

【问题讨论】:

  • 能给每个人一个HashMap,从好的到需求的映射吗?
  • 你能澄清一下吗?所以,如果我知道你有两个类:Person 和 Commodity。这些类有什么属性?
  • 我编辑了标题以(希望)阐明您的要求。如果它不符合您的意图,您可以重新编辑它。

标签: java class modeling


【解决方案1】:

我可以想到几个简单的方法来实现它;哪个更合适可能取决于您需要如何使用Person的商品需求。

第一个想法是让每个Person持有CommodityMap来计数,以表明该人需要哪些商品以及每种商品的数量。是这样的:

import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;

@EqualsAndHashCode
@AllArgsConstructor
public class Commodity {

    @Getter
    private UUID id;

    @Getter
    private String name;
}
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;

public class Person {

    private Map<Commodity, Integer> demands = new HashMap<>();

    public void setDemand(Commodity commodity, Integer count) {
        demands.put(commodity, count);
    }

    public Optional<Integer> getDemand(Commodity commodity) {
        return Optional.ofNullable(demands.get(commodity));
    }
}

另一个选项可能更有意义,例如,如果您需要将 Demand 作为模型中的不同类进行跟踪,则 Person 有一组 Demands,每个 @987654330 @引用Commodity一个计数。所以,给定上面相同的Commodity类,是这样的:

import lombok.AllArgsConstructor;
import lombok.Getter;

@AllArgsConstructor
@Getter
public class Demand {

    private Commodity commodity;
    private int count;
}
import java.util.LinkedList;
import java.util.List;

public class Person {

    private List<Demand> demands = new LinkedList<>();

    public void addDemand(Commodity commodity, Integer count) {
        addDemand(new Demand(commodity, count));
    }

    public void addDemand(Demand demand) {
        demands.add(demand);
    }
}

【讨论】:

    猜你喜欢
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    相关资源
    最近更新 更多