我正在寻找创建一个java程序,它将存储每个提升和执行代表的锻炼。但我不确定如何组织数据结构。我正在考虑使用hashmap来存储所有内容,其中hashcode是执行的日期。因此,2013年12月24日执行的某些操作将存储在122413.我想要存储的元素将像一个数组数组,每个数组显示提升,每个后续元素将在执行的rep和权重之间交替。
这是一个可视化的例子。
arr = [["bench press",10,185,9,195,8,205],["shoulder press",10,95,8,95,6,95],...]
因此,如果我想要为我的第二套卧推器执行代表和重量,它将输出如下:
You performed arr[0][1] reps of arr[0][2] for arr[0][0]
---
You performed 10 reps of 185 for bench press
-----
我知道这可以在python中完成,但我不确定它是否在java中可用? 我遇到了一些问题,因为我发现数组的数据类型都需要是相同的类型(没有字符串AND int),这实际上没问题,因为这些数字实际上没有数值而且只是显示。但是我也有点困在于将一个数组存储在一个hashmap中并构建一个数组数组。
所以,我的问题是:对于我想要完成的事情,这是一个可行的实现吗?或者有更好的方法去组织这个吗?如果可能的话,我希望按照我之前显示的日期按时组织数据。
任何帮助或建议都会很精彩。谢谢!
答案 0 :(得分:1)
我可能会创建自定义数据结构来为您的场景建模。例如。
使用权重属性和reps属性设置类。
使用name属性和Sets集合的练习类。
带有一组练习的锻炼课程和锻炼完成时的日期属性。
这样,如果你想扩展它以包括那天你吃的食物,你可以将它添加到锻炼中,或者可能更好的选择是组成另一类锻炼和吃的食物。
通过这种方式,您可以在某一天的训练与您吃的东西之间取得相关性。
- 我是一名C#开发人员,如果语法或类型不正确,我没有触及Java,所以道歉 -
public class Set {
public Set()
{
this._weight = 0;
this._reps = new ArrayList<int>();
}
private BigDecimal _weight;
private List<int> _reps;
// implement public properties / methods
}
public class Exercise {
public Exercise()
{
this._name = "";
this._sets = new ArrayList<Set>();
}
private String _name;
private List<Set> _sets;
// implement public properties / methods
}
public class Workout {
public Workout(Date workoutDate)
{
this._date = workoutDate;
this._exercises = new ArrayList<Exercise>
}
private Date _date;
private List<Exercise> _exercises;
// implement public properties / methods
}
然后,您可以使用Comparator<Workout>