我正在尝试实现自己的运动应用,以便在健身房使用。
我不禁怀疑哪个系列最适合我。
SO,使用该集合的类称为“锻炼” 并具有3个变量,如下所述:
public class Exercise {
private String description;
private Map<Double, Integer> WeightsNRep;
private char category;
public Exercise(String description, char category){
this.description=description;
WeightsNRep = new HashMap<>();
this.category = category;
}
如您所见,它包含三个变量,其中一个是描述变量,而有趣的一个是WeightsNRep-它需要保存每个集合的数据-这意味着它将保存WeightOFSet1,NumberOFRepInSet1,WeightOFSet2,NumberOFRepInSet2 ,直到运动结束。
我对收藏有一些要求:
其次,我希望它具有可读性,因为之后我希望将数据存储在具有以下模板的文件中:
“描述:” +描述+ \ t + WeightOFSet1 + \ t + NumberOFRepInSet1 + \ t + .....“
直到最后一个代表-我的意思是我想覆盖toString功能,但仍然希望可以很好地访问集合的内部变量。
例如-当我选择HashMap时,我了解到,如果我将密钥设置为我的权重,那将是不正确的,因为:
答案 0 :(得分:1)
如果您使用以权重作为关键点的Map,则每个集合的权重必须唯一(因为这是关键点)。如果顺序对您很重要,则应该考虑使用一个对象,该对象具有每个集合的权重和重复次数,并将其放置在列表中,如果顺序对您而言很重要,那么它就不是一个ArrayList。
答案 1 :(得分:1)
您应该创建一个名为RepSet
的类:
class RepSet {
double weight;
int reps;
// Constructor (and any getters that may be required) omitted for brevity.
}
,并将这些列表存储在WeightsNRep
字段中。
private List<RepSet> WeightsNRep = new ArrayList<>();
通过使用列表,您可以允许多个RepSet
拥有相同的重量。
关于字符串的要求:您只需要手动构建即可。例如:
"Description : " + Description
+ WeightsNRep.stream().map(r -> r.weight + "\t" + r.reps).collect(joining("\t"))