我正在尝试实现自己的运动应用,以便在健身房使用。
我不知道哪个收藏最适合我。
这样,该类使用的集合称为“运动”
它具有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等。直到运动结束。
我对集合有一些要求:
我可以选择做几套-根据练习可以是4或5或3。
其次,我希望它具有可读性,因为之后我希望将数据存储在带有此模板的文件中:
“描述:” +描述+ \ t + WeightOFSet1 + \ t + NumberOFRepInSet1 + \ t + .....“
直到最后一个代表-我的意思是我想放弃toString功能,但仍然希望可以很好地访问集合的内部变量。
例如,当我选择HashMap时,我了解到,如果我将密钥设置为权重,那将是不正确的,因为:
如果我在一组中具有两次相同的权重,则不会保存第二个权重-因为Hashmap仅为一组键保存一组权重!
我将无法按顺序保存它,因为我只能使用接受键的函数get来获取它的值。
最佳答案
您应该创建一个名为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"))