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

2024-01-21

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

  1. 另外,当你只能创建一个集合时,枚举还有什么意义呢?像 例如,我看到的最后一个视频,视频制作者以以下格式对人员进行了枚举 name(String description, int Age),这就是他定义构造函数的方式,他有 获取和设置方法。这样做比仅仅创造一个人有什么好处 以相同的方式创建一个集合并将人员对象存储在 那里?

  2. 我去查了一下上面的内容,看到这个帖子后:Java枚举和迭代器的区别 https://stackoverflow.com/questions/948194/difference-between-java-enumeration-and-iterator迭代器可以让我循环遍历集合,而这段时间我 认为枚举就像是一个不同的类。但在线程中他们是 比较他们。枚举就像一个迭代器,但没有删除 方法。这个枚举与我上面讨论的有什么不同吗?


您对几个不同的类别感到困惑。

  1. enum
  2. Enumeration
  3. Iterator

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

public enum Gender {
    MALE,
    FEMALE;
}

它旨在提供类型安全。

An Enumeration是现已弃用的一部分Collections API - 忘记这个吧。它被取代Iterator.

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

为什么要使用Iterator而不是一个Collection也许我的答案here https://stackoverflow.com/a/20454741/2071828会有帮助的。

As for 人员的枚举,格式为 name(Stringdescription,intage),这就是他定义构造函数的方式,并且他有 get 和 set 方法。这是一个很大的禁忌。

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

如果你想要一个Collection of people then a Person类在一个Collection<Person>将是正确的解决方案。

所以,总而言之。使用enum对于常数值;用一个Collection对于事物的集合。并且不要使用Enumeration- 忘记它的存在。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中关于集合、枚举和迭代器的困惑 的相关文章

  • Java 8 可选

    我想检查特定对象大小是否大于 0 如果它大于 0 那么我想创建一个可选对象 如果不是 那么我想返回一个可选的空对象 这是java代码的长版本 if fooA size gt 0 return Optional of new Foo else
  • 如何从球衣服务端点发送实体列表?

    我正在从球衣服务器发送实体列表 在客户端 我试图获取这些实体列表 但它给了元帅例外 为什么它在元素名末尾添加 s 即 emps 而不是 emp XmlRootElement public class Emp Server side code
  • Maven项目中的HDF5

    我正在尝试将 hdf hdf5lib H5 导入到 NetBeans 中的 Maven 项目中 它有这个作为导入行 import hdf hdf5lib H5 正如这里所建议的 https support hdfgroup org prod
  • 当您在 C# 中将枚举强制转换为 int 时,幕后会发生什么?

    我正在寻找用 C 实现模拟器 我考虑的事情之一是创建与其字节值关联的所有操作码的枚举 但是 我想知道考虑到我需要多久访问该字节值才能执行诸如将其用作查找表中的索引等操作 这是否不是一个好主意 当你将 enum 转换为 int 时 会发生什么
  • 如何注册 org.springframework.integration.monitor.IntegrationMBeanExporter

    根据http www ibm com support knowledgecenter en SS7K4U 8 5 5 com ibm websphere nd multiplatform doc ae cspr data access tr
  • 竞争条件和 Clojure Atoms

    clojure atom 的文档指出 Changes to atoms are always free of race conditions 然而 竞争条件不仅是根据更改定义的 而且是在不同线程中并行逻辑操作的上下文中定义的 我想知道 保证
  • 当我只有一个简短的显示名称时如何获取枚举?

    我得到一个短显示名称 我需要使用它来获取枚举值 Display Name Alabama ShortName AL Alabama 1 我刚刚从外部数据库获取 AL 我需要以某种方式读取我的枚举并获得正确的值 感谢大家的帮助 jasel我稍
  • 如何使用Gson将JSONArray转换为List?

    在我的 Android 项目中 我试图将收到的 JSONArray 转换为列表 在 的帮助下这个答案 https stackoverflow com questions 8371274 how to parse json array in
  • 如何从 Java 生产代码中删除调试语句

    编译器是否可以从生产代码中删除用于调试目的 例如日志记录 的语句 调试语句需要以某种方式进行标记 可能使用注释 设置属性 debug true 并在每个调试语句中检查它很容易 但这会降低性能 如果编译器能够简单地使调试语句消失 那就太好了
  • 如何防止我的 servlet 被其他网站调用

    好的 我有一个像这样的简单的 servlet public class SimpleServlet extends HttpServlet public void doPost HttpServletRequest req HttpServ
  • 字符串 a == 字符串 b 的规则 [重复]

    这个问题在这里已经有答案了 我试图了解字符串池的工作原理以及一个字符串等于另一个字符串的规则是什么 例如这个片段 public static void main String hi String s1 lol String s2 lol S
  • java多线程中“私有最终对象”锁定有什么用?

    java多线程中 私有最终对象 锁定有什么用 据我的理解 我认为要使一个类成为线程安全的 我们应该使用内部锁定 将所有方法标记为同步并使用 this 将它们锁定在对象的监视器上 或者我们可以用方法中的私有最终对象锁替换类的 this 上标记
  • 是否有适用于 Java 的 CalDAV 客户端库? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想使用 CalDAV 协议与我的日
  • java内存不足然后退出

    我有一个必须分析大文件的软件 限制输入或提供无限内存都不是一个选择 所以我必须忍受飞行的 OOME 因为 OOME 只杀死线程 所以我的软件运行在一些糟糕的状态 从外面看一切都很好 因为进程正在运行 但在内部却是脑死亡 我想拔掉它的插头 但
  • 错误包括 bouncycastle 提供商

    我需要使用bouncycastle provider我的项目中的库 我已将其包含在 gradle 项目中 apply plugin application sourceCompatibility 1 6 version 1 0 0 main
  • jasper 报告文件中出现错误

    首先 我在 iReport 5 1 0 中创建一个 R D1 jrxml 文件 我执行该报告的 Java 代码如下所示 import java sql Connection import java sql DriverManager imp
  • 使用 SimpleDateFormat、Java 进行错误的日期解析

    我需要使用日期模式 yyyy MM dd 解析输入字符串中的日期 如果日期采用任何其他格式 则抛出错误 这是我解析日期的代码 private void validateDate throws MyException Date parsedD
  • Android NDK - 仅用 C/C++ 编写

    有没有一种可能的方法可以使用 C C 编写整个 NDK 应用程序 而无需像 hello jni 示例项目 HelloJni java 中那样的 Java 入门 类 以某种方式创建一个 HelloJni c 来执行相同的操作 从 Androi
  • Spring Boot 2 中的 401 代替 403

    With 春季启动 https projects spring io spring boot 1 5 6 发布我能够发送 HTTP 状态代码401代替403如中所述如果请求未经身份验证的uri 如何让Spring Security响应未经授
  • Spring - 使用存储过程时使用 simplejdbccall 进行批量更新

    我正在使用 spring jdbc 模板 使用存储过程创建记录 public Long create City obj SimpleJdbcCall jdbcCall new SimpleJdbcCall getJdbcTemplate g

随机推荐

  • 使用 ctypes 将 python 字符串传递给 Fortran 子例程

    我正在尝试使用 ctypes 将参数传递给共享库中的 Fortran 子例程 现在这是我的简单 fortran 代码 MODULE test module INCLUDES SUBROUTINE fstr test file or exte
  • 用 C++ 构建多线程工作队列(消费者/生产者)

    我有以下场景 我有一个线程应该填充 带有整数对的容器 本质上是任务描述 我有一个很大的 应从此容器中获取元素并执行操作的工作线程数 8 16 一些工作 我认为这个问题可以通过阻塞队列轻松解决 例如在项目删除时 线程同步对队列的访问 如果没有
  • WPF DataTemplate 下的排序 ItemsControl

    我在 DataTemplate 下使用 ItemsControl 我想对 ItemsControl 进行排序ic使用 id 列
  • Unity3D C# 检查事件是否为空

    例如 DelegateHandler是我发送事件的地方 public class DelegateHandler MonoBehaviour public delegate void OnButtonClickDelegate public
  • 方法签名中的Java“参数”?

    在C 中 如果希望方法具有不确定数量的参数 可以将方法签名中的最后一个参数设为params这样方法参数看起来像一个数组 但允许使用该方法的每个人根据调用者的需要传递任意数量的该类型的参数 我相当确定 Java 支持类似的行为 但我不知道如何
  • 查找子字符串,带有一些附加条件

    我得到了一个如下所示的字符串 1011010100 我的任务是找到一个子字符串的长度 其中空值的数量始终 10110101 gt 8 我知道复杂度应该是 O n 或 O n log n 因为长度最多可达 10 6 有任何想法吗 The O
  • 在 Android 上,我可以注册一个回调来告诉我蓝牙是否打开或关闭吗?

    我需要知道我的应用程序内部蓝牙是否打开或关闭 或者蓝牙是否打开或关闭 例如从操作系统设置下拉菜单 我想我可以在活动中做到这一点onResume 但事实证明 当 Android 操作系统的设置 下拉菜单 通过用手指从屏幕顶部边缘下拉来访问的菜
  • 用于计算类数的部分语法

    我需要计算正确的 C 源文件中的类数量 我写了以下语法 grammar CSharpClassGrammar options language CSharp2 parser namespace CSharpClassGrammar Gene
  • H2 表列在双引号中不区分大小写

    我正在开发一个工具 它将数据导入到动态生成的模式中 因此 我几乎无法控制表或列名称的外观 我最近遇到了在表中创建两列名称相同但大小写不同的问题 这个问题可以通过这个最简单的 DDL 操作来演示 CREATE TABLE a c1 integ
  • 尝试使用 BayesSearchCV 调整 MLPClassifier hide_layer_sizes 时出错

    当尝试调整 sklearn 时MLP分类器hidden layer sizes超参数 使用贝叶斯搜索CV 我收到错误 ValueError can only convert an array of size 1 to a Python sc
  • Android在哪里存储SQLite的数据库版本?

    我无法找到 Android 在 SQLite 数据库文件中存储数据库版本的位置 数据库版本到底存储在哪里 您可以使用以下方式阅读版本android database sqlite SQLiteDatabase getVersion 在内部
  • appcompat 库样式如何工作

    我对 appcompat 库中的样式如何工作感到非常困惑 根据here https chris banes me 2014 10 17 appcompat v21 我们现在使用 Toolbar ActionBar 的支持实现 平台意味着我们
  • 检查二叉树是否是二叉搜索树的伪代码 - 不确定递归

    我的作业是编写伪代码来检查有效的二叉树是否是搜索二叉树 我创建了一个数组来保存树的有序值 如果有序值按降序排列 则意味着它确实是 BST 但是 我在方法 InOverArr 中的递归方面遇到了一些问题 我需要更新数组的索引 以便按照值在树中
  • 使用 React Portal 时将 css 注入到 window.document

    我正在使用反应门户来呈现我的反应视图的可打印版本 这就是我所做的 import Component from react import ReactDOM from react dom export default class PortalW
  • 内容宽度未知的 jCarousel

    我正在尝试使用 jQuery 的 jCarousel 插件 以便为我的网站用户提供可滚动 水平 内容 我提到的内容基本上都是用户定义的 li 元素的样式使其具有选项卡的感觉和外观 所以基本上我试图实现与 pageflakes com 中的选
  • 为什么我的 Windows 10 PC 在调用 SetWaitableTimer() 后没有唤醒?

    我有两台 Windows 10 电脑 都运行 Fall Creators Update 并安装了所有最新补丁 一个在通过 CreateWaitableTimer SetWaitableTimer 设置计时器后从睡眠中唤醒 另一个则不会 这是
  • 设置 HTTP 标头

    我正在尝试在我的 Go Web 服务器中设置标头 我在用着gorilla mux and net http包 我想设置Access Control Allow Origin 允许跨域AJAX 这是我的 Go 代码 func saveHand
  • PHP Curl+连接被拒绝

    我在 PHP Curl 中收到此错误 Hostname in DNS cache was stale zapped Trying xxx xx x xx connect to xxx xx x xx port 4005 failed Con
  • 为什么 backgroundColor=rgb(a,b,c) 不起作用?

    为什么背景颜色不根据RGB值改变 我做错了什
  • Java中关于集合、枚举和迭代器的困惑

    我的教科书几乎没有讲到Java中的枚举 我看过的视频也没有解释太多 所以根据我的理解 枚举就像一个完全不同的类 你可以在其中存储常量 有人可以向我详细介绍一下常量吗 也许 给我看看更好的例子 就像我在看到示例后明白了什么是常量一样 例如颜色