存储学生详细信息的最佳收藏?

时间:2012-08-02 13:22:22

标签: java file-io collections

嘿我正在为学生的详细信息做一个商店,我想要一些关于使用哪个系列的意见。商店将提供姓名,号码,地址和电子邮件等详细信息。然后将商店打印到文本文件,我可以在其中加载,保存,编辑和删除文本文件中的详细信息。我以前从未这样做过,如果在使用集合时对文件I / O有任何限制,我也不会这样做。所以我非常感谢这些评论。提前谢谢。

4 个答案:

答案 0 :(得分:4)

如果我在你的位置,

然后我会创建一个 bean类Student集合 ArrayList<Student> student = new ArrayList<Student>();,而ArrayList序列化所以没有磁盘写入问题,class 操作 IO

排序 ArrayList 对象属性 look

答案 1 :(得分:3)

除非需要一些特殊的“快速定位”功能,例如按姓氏或学生ID搜索,否则列表将是适当的集合。

List<Student> students = new ArrayList<Student>();

如果您确实需要根据学生ID的某些属性来组织学生,请考虑使用LinkedHashMap

Map<String,Student> studentById = new LinkedHashMap<String,Student>();

LinkedHashMap为您提供可预测的迭代顺序。您可以使用常规HashMap<K,V>,但迭代的顺序将是任意的。最后,您可以使用TreeMap<K,V>,它将基于键的排序迭代顺序。

答案 2 :(得分:1)

如果它必须是可序列化的,即意味着你可以将其写入磁盘,那么你可以使用List。现在,在任何人尖叫之前,您无法序列化正确的List,但您也无法实例化List。由于我们知道List的所有已知子类都是可序列化的,因此您可以安全地进行转换。关于如何存储数据List<Student>应该没问题。

编辑

这里似乎有些混乱。在面向对象语言中,我们知道is-a关系适用于层次结构中指定的对象。因此,在Java API中,我们有一个名为List的接口,该接口具有实现它的类ArrayList。这会将ArrayList置于List的层次结构中。由于ArrayList实现Serializable,我们知道您无法实例化标记有关键字接口的对象(在Java中)。我们可以使用强制转换为Serialize List的任何已知实现。这将起作用的原因是传递的实现(即具体对象)保证是可序列化的。

答案 3 :(得分:0)

在最简单的情况下,java.util.List将完全按照您的意愿行事。但是,如果您希望能够快速查找集合中的条目(以支持您的更新要求),您还应该查看java.util.Map。 Map允许您快速导航到特定记录而无需遍历整个集合,而使用List,您必须依次查看集合中的每个学生,直到找到您感兴趣的那个。