我正在尝试实现我自己的锻炼应用程序以便在健身房使用。
我怀疑哪个系列最适合我。
SO,使用名为“Exercise”的集合的类 它有 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"))
关于java - 实现我自己的锻炼助手应用程序 - Collection 注意事项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54035542/