Java 实现我自己的练习助手应用程序-收集注意事项

Java 实现我自己的练习助手应用程序-收集注意事项,java,android,collections,Java,Android,Collections,我正在尝试实现我自己的健身应用程序 我不知道哪一套最适合我 因此,使用集合的类称为“Exercise” 它有3个变量,如下所述: public class Exercise { private String description; private Map<Double, Integer> WeightsNRep; private char category; public Exercise(String description, char category){ this

我正在尝试实现我自己的健身应用程序

我不知道哪一套最适合我

因此,使用集合的类称为“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;
}
公开课练习{
私有字符串描述;
私有地图权重snrep;
私有字符类别;
公共练习(字符串描述,字符类别){
这个。描述=描述;
WeightsNRep=新HashMap();
this.category=类别;
}
如你所见,它包含三个变量,其中一个是描述,有趣的是权重snrep——它需要保存每个集合的数据——这意味着它将保存集合1、NumberOFRepInSet1、集合2、NumberOFRepInSet2的权重,直到练习结束

我对收藏有几个要求:

  • 我可以选择做多少套-可以是4套、5套或3套,具体取决于练习

  • 第二,我希望它是可读的,因为我希望以后用这个模板将数据存储在一个文件中:

    描述:“+Description+\t+集合1的权重+\t+NumberOFRepInSet1+\t+…”

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

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

  • 如果我在一个集合中有两个相同的权重,它就不会保存第二个,因为Hashmap只为一个键保存一个集合
  • 我不能按顺序保存它,因为我只能使用接受键的函数get来获取它的值

  • 如果使用权重作为键的贴图,则权重必须是唯一的(因为它是键)对于每一个集合,您应该考虑使用每个集合的权重和ReP的对象,并将其放在列表中,如果该命令对LIKEDLIST非常重要,如果不是AARAYLIST。

    < P>您应该创建一个类,叫做“代码> ReStP< <代码>:

    class RepSet {
      double weight;
      int reps;
    
      // Constructor (and any getters that may be required) omitted for brevity.
    }
    
    并在
    WeightsNRep
    字段中存储这些属性的列表

    private List<RepSet> WeightsNRep = new ArrayList<>();
    

    “其次,我希望它是可读的"没有现成的集合可以为您做到这一点,至少不是以您描述的特定格式。无论您选择何种结构,您最终都会自己构建该字符串,因此这或多或少不是一项要求。问题是什么?@AndyTurner我知道。我曾想过重写to string功能,但仍然希望内部可以很好地访问变量
    "Description : " + Description
        + WeightsNRep.stream().map(r -> r.weight + "\t" + r.reps).collect(joining("\t"))