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

Abd*_*dul 3 java collections enums iterator enumeration

我的教科书几乎没有谈到Java中的枚举,而我所看过的视频并没有解释太多.所以根据我的理解,枚举就像一个完全不同的类,你可以存储常量.有人可以向我展示常量,也许可以向我展示更好的例子吗?就像我在看到颜色,方向之类的例子之后了解常量是什么,并且在之前的视频中是人,而在学年期间我的项目的枚举版中,它是命令词.但我不是100%理解这个概念或如何使用.

  1. 另外,当你可以制作一个集合时,枚举的重点是什么?例如,我看到的最后一个视频,视频制作者以name(String description,int age)的格式制作了人物的枚举,这就是他如何定义他的构造函数并且他已经获得并设置了方法.这样做的好处是什么,而不仅仅是以相同的方式创建一个人物对象,他们创建一个集合并在那里存储人物对象?

  2. 我查看了上面的内容,看了这个帖子后: Java Enumeration和Iterator之间的区别迭代 器是让我遍历集合的东西,而且这一次我认为枚举就像是一个不同的类.但在线程中他们正在比较它们.枚举就像迭代器,但没有remove方法.这个枚举与我上面谈到的有什么不同吗?

Bor*_*der 6

您在几个不同的类之间感到困惑.

  1. enum
  2. Enumeration
  3. Iterator

An enum枚举常量,即可以采用多个定义值的常量,例如

public enum Gender {
    MALE,
    FEMALE;
}
Run Code Online (Sandbox Code Playgroud)

它旨在提供类型安全.

一个Enumeration是的,现在不建议使用部分Collection的API -忘记这一点.它被取代了Iterator.

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

为什么使用一个Iterator而不是一个Collection也许我的答案在这将有所帮助.

对于name(String description,int age)格式的人的枚举,这就是他如何定义他的构造函数,并且他已经获取并设置了方法.这是一个很大的禁忌.

一个enum应该是一个常数所以不应该有setter方法.An enum是一组定义的值,如上例所示.

如果你想Collectionpeople那么一Person类的Collection<Person>将是正确的解决方案.

所以,总结一下.使用enumfor常量值; 使用Collectionfor,well,收集的东西.并且不要使用Enumeration- 忘记它存在.

  • @Abdul如果我有一个方法`setGender(final int gender)`我可以传入任何有效的`int` - 比如说'2000`.这意味着由程序来检查有效性.如果我有一个方法`setGender(最终的性别性别)`我只能**传入`Gender.MALE`或`Gender.FEMALE` - 我已将'Gender`变成了自己的**类型**.这是类型安全. (2认同)