java - 实现我自己的锻炼助手应用程序 - Collection 注意事项

标签 java android collections

我正在尝试实现我自己的锻炼应用程序以便在健身房使用。

我怀疑哪个系列最适合我。

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 , ... 直到运动结束。

我对集合有几个要求:

  1. 我可以选择做多少组 - 可以是 4 组、5 组或 3 组,具体取决于练习。
  2. 其次,我希望它是可读的,因为我想随后将数据存储在具有此模板的文件中:

    “描述:” + 描述 +\t + WeightOFSet1 +\t + NumberOFRepInSet1 +\t + ..... "

    直到最后的代表 - 我的意思是我想超越 toString 功能,但我仍然希望集合的内部变量可以很好地访问。

例如 - 当我选择 HashMap 时,我明白如果我将键设置为我的权重那将是不正确的,因为 :

  1. 如果我在一组中有两次相同的权重,它不会保存第二个 - 因为 Hashmap 只为一个键保存一组!
  2. 我无法按顺序保存它,因为我只能使用接受键的函数 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/

相关文章:

java - 在java集合中存储数据库数据(多对多关系)的最佳方法

java - 对 Bean 的 Arraylist 的 Arraylist 进行排序

java - 如何使用接口(interface)作为参数?

java - 多次调用 CountDownLatch.await(int) 超时

android - 尝试让 Monkeyrunner 包含外部 .py 文件

android - 销毁和重构 FragmentPagerAdapter

java - 在 Java 中显示树层次结构及其值

主要功能

java - 开关盒中的 OR 运算符?

java - Android Maps Utils Clustering show InfoWindow