5

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

4

4 回答 4

4

如果我在你的地方,

然后我会创建一个bean 类,说Student和用于收集 ArrayList<Student> student = new ArrayList<Student>();,并且ArrayList序列化的,因此磁盘写入和class所有IO 操作都没有问题。

对象属性排序 _ArrayList

于 2012-08-02T13:40:38.167 回答
3

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

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

如果您确实需要按某些属性(例如按学生 ID)组织学生,请考虑使用LinkedHashMap

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

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

于 2012-08-02T13:26:13.853 回答
1

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

编辑

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

于 2012-08-02T13:27:00.270 回答
0

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

于 2012-08-02T13:28:58.243 回答