我可以想到几个简单的方法来实现它;哪个更合适可能取决于您需要如何使用Person的商品需求。
第一个想法是让每个Person持有Commodity的Map来计数,以表明该人需要哪些商品以及每种商品的数量。是这样的:
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);
}
}