使用哈希映射和数组组织锻炼信息

时间:2013-12-25 15:27:34

标签: java arrays hashmap

我正在寻找创建一个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中并构建一个数组数组。

所以,我的问题是:对于我想要完成的事情,这是一个可行的实现吗?或者有更好的方法去组织这个吗?如果可能的话,我希望按照我之前显示的日期按时组织数据。
任何帮助或建议都会很精彩。谢谢!

1 个答案:

答案 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>

的自定义实现存储列表并按日期对其进行排序