所以我想编写一个可以管理锻炼的程序。我有一个班级" Excersise"我将从这个类中创建许多对象。我想知道我应该如何处理所有这些对象。直到现在我有一个包含所有Excersises的ArrayList,但是当我想在锻炼中添加一个Excersise时,我必须这样做:os.system("ls -l")
意味着我必须知道每个异常的索引。我也想知道ArrayLists的性能有多好。我应该考虑使用其他数据结构吗?
答案 0 :(得分:0)
如果您有常量的Excersises池,并且只需要通过索引访问它们,那么您可以使用数组:
Excersise[] excersises = new Excersise[EXCERSIZE_SIZE];
//fill excersises
//use excersises
workout.add(excersises[index]);
ArrayList旨在通过索引快速访问元素,并且它在下面使用数组,但它在get方法中有范围检查。另一方面,ArrayList提供了许多有用的方法,以防您需要其中任何一种方法。另一件事是,如果你想在其中包含很多对象,那么创建它有一些容量可能是明智的,你可以知道你将添加到这个ArrayList的对象数量,例如,如果你期望1000然后你可以这样做:
List<Excersise> excersises = new ArrayList(1000);
这样,当ArrayList中的数组无法存储提供的值时,你将省略在ArrayList.add方法中重新创建数组(HashMap也有构造函数HashMap(int initialCapacity)
)。
如果你想访问例如它的符号名称,让我们说“俯卧撑”,那么你可以使用HashMap:
Map<String, Excersise> excersiseByName = new HashMap<>();
//fill excersises
workout.add(excersiseByName.get("push ups"));