关于Java中的集合,枚举和迭代器的困惑

时间:2013-12-20 16:12:51

标签: java collections enums iterator enumeration

我的教科书几乎没有谈到Java中的枚举,我看过的视频也没有解释。所以从我的理解来看,枚举就像一个完全不同的阶级 你可以在哪里存储常量。有人可以向我展示常量,也许 告诉我更好的例子吗?就像我在看到这些例子后了解常量一样 例如颜色,方向,以及之前的视频中的人物,而在枚举中 在学年期间我的项目的一个版本,它是命令词。但我不是100% 了解概念或如何使用。

  1. 此外,当你可以制作一个集合时,枚举的重点是什么?像 例如,我看到的最后一个视频,视频制作者制作了人物形式的枚举 name(字符串描述,int age),这就是他定义构造函数的方式 获取并设置方法。这样做的好处不仅仅是创造一个人 以相同的方式对象,并创建一个集合并存储人物对象 那里?

  2. 我去查看上面的内容,看到这个帖子后: Difference between Java Enumeration and Iterator 迭代器是让我遍历集合的东西,而这一直是我 思想枚举就像是一个不同的阶级。但在线程中他们是 比较它们。枚举就像迭代器,但没有删除 方法。这个枚举与我上面谈到的有什么不同吗?

1 个答案:

答案 0 :(得分:6)

你在几个不同的课程之间感到困惑。

  1. enum
  2. Enumeration
  3. Iterator
  4. enum枚举常量,即可以采用多个定义值的常量,例如

    public enum Gender {
        MALE,
        FEMALE;
    }
    

    它旨在提供类型安全。

    EnumerationCollection API的一个现已弃用的部分 - 忘了这一点。它被Iterator取代。

    Iterator是四人帮所描述的迭代器模式的实现。

    为什么要使用Iterator而不是Collection,我的回答here可能会有所帮助。

    对于以名称格式(字符串描述,int年龄)的人的枚举,这就是他如何定义他的构造函数并且他已经获取并设置方法。这是一个很大的禁忌。

    enum应该是常量,因此不应该使用setter方法。 enum是一组定义的值,如上例所示。

    如果您需要Collection people,则Person中的Collection<Person>班级将是正确的解决方案。

    总而言之。使用enum作为常量值;使用Collection来收集事物。并且不要使用Enumeration - 忘记它存在。