`
lwcheng1985
  • 浏览: 96076 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java-jdk拾遗-list,iterator,enum

阅读更多
List
如果 List 允许进行多项选择,则单击已选中的项时,将取消选中该项。在上面的示例中,一次只能从滚动列表中选择一项,因为创建新的滚动列表时,第二个参数为 false。如果 List 不允许进行多项选择,则选择某一项会导致其他选中的项取消选中。

注意,本示例中显示的列表是用四个可视行创建的。创建该列表之后,不可更改可视行的数量。默认的 List 是用四行创建的,所以 lst = new List() 与 list = new List(4, false) 等效。

从 Java 1.1 开始,AWT(Abstract Window Toolkit,抽象窗口工具包)会把列表上发生的所有鼠标、键盘和焦点事件发送给 List 对象。(维护旧的 AWT 事件模型的目的是为了向后兼容,不推荐使用它。)

当用户选中或取消选中某项时,AWT 将向列表发送一个 ItemEvent 实例。当用户双击滚动列表中的某一项时,AWT 会在紧随项事件后向列表发送一个 ActionEvent 实例。当用户选中列表中的某项,按下 return 键时,AWT 也会生成一个动作事件。

如果应用程序需要基于此列表中用户选中或激活的项执行某个动作,则应该相应地实现 ItemListener 或 ActionListener,并注册新的侦听器,以便在此列表中接收事件。

对于多项选择滚动列表,使用外部动作(如单击按钮)来触发动作被认为是一种更好的用户界面。

Iterator
public interface Iterator<E>对 collection 进行迭代的迭代器。迭代器取代了 Java Collections Framework 中的 Enumeration。迭代器与枚举有两点不同:

迭代器允许调用者利用定义良好的语义在迭代期间从迭代器所指向的 collection 移除元素。
方法名称得到了改进。
Enum
java.lang.Object
  java.lang.Enum<E>
所有已实现的接口:
Serializable, Comparable<E>
EnumMap
public class EnumMap<K extends Enum<K>,V>extends AbstractMap<K,V>implements Serializable, Cloneable与枚举类型键一起使用的专用 Map 实现。枚举映射中所有键都必须来自单个枚举类型,该枚举类型在创建映射时显式或隐式地指定。枚举映射在内部表示为数组。此表示形式非常紧凑且高效。

枚举映射根据其键的自然顺序 来维护(该顺序是声明枚举常量的顺序)。在 collection 视图(keySet()、entrySet() 和 values())所返回的迭代器中反映了这一点。

由 collection 视图返回的迭代器是弱一致 的:它们不会抛出 ConcurrentModificationException,也不一定显示在迭代进行时发生的任何映射修改的效果。

不允许使用 null 键。试图插入 null 键将抛出 NullPointerException。但是,试图测试是否出现 null 键或移除 null 键将不会抛出异常。允许使用 null 值。

像大多数 collection 一样,EnumMap 是不同步的。如果多个线程同时访问一个枚举映射,并且至少有一个线程修改该映射,则此枚举映射在外部应该是同步的。这一般通过对自然封装该枚举映射的某个对象进行同步来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedMap(java.util.Map) 方法来“包装”该枚举。最好在创建时完成这一操作,以防止意外的非同步访问:

     Map<EnumKey, V> m
         = Collections.synchronizedMap(new EnumMap<EnumKey, V>(...));
实现注意事项:所有基本操作都在固定时间内执行。虽然并不保证,但它们很可能比其 HashMap 副本更快。

EnumSet

public abstract class EnumSet<E extends Enum<E>>extends AbstractSet<E>implements Cloneable, Serializable与枚举类型一起使用的专用 Set 实现。枚举 set 中所有键都必须来自单个枚举类型,该枚举类型在创建 set 时显式或隐式地指定。枚举 set 在内部表示为位向量。此表示形式非常紧凑且高效。此类的空间和时间性能应该很好,足以用作传统上基于 int 的“位标志”的替换形式,具有高品质、类型安全的优势。如果其参数也是一个枚举 set,则批量操作(如 containsAll 和 retainAll)也应运行得非常快。
由 iterator 方法返回的迭代器按其自然顺序 遍历这些元素(该顺序是声明枚举常量的顺序)。返回的迭代器是弱一致的:它从不抛出 ConcurrentModificationException,也不一定显示在迭代进行时发生的任何 set 修改的效果。
不允许使用 null 元素。试图插入 null 元素将抛出 NullPointerException。但是,试图测试是否出现 null 元素或移除 null 元素将不会抛出异常。
像大多数 collection 实现一样,EnumSet 是不同步的。如果多个线程同时访问一个枚举 set,并且至少有一个线程修改该 set,则此枚举 set 在外部应该是同步的。这通常是通过对自然封装该枚举 set 的对象执行同步操作来完成的。如果不存在这样的对象,则应该使用 Collections.synchronizedSet(java.util.Set) 方法来“包装”该 set。最好在创建时完成这一操作,以防止意外的非同步访问:
Set<MyEnum> s = Collections.synchronizedSet(EnumSet.noneOf(MyEnum.class));
实现注意事项:所有基本操作都在固定时间内执行。虽然并不保证,但它们很可能比其 HashSet 副本更快。如果其参数也是一个枚举 set ,则批量操作会在固定时间内执行。
此类是 Java Collections Framework 的成员。
分享到:
评论

相关推荐

    Java-JDK1.8-windows-x64位

    Java-JDK1.8-windows-x64位——免费不要积分!!! Java-JDK1.8-windows-x64位——免费不要积分!!! Java-JDK1.8-windows-x64位——免费不要积分!!! Java-JDK1.8-windows-x64位——免费不要积分!!! Java-JDK...

    java-jdk1.8-jdk-8u201-linux-x64.zip

    这个压缩包文件"java-jdk1.8-jdk-8u201-linux-x64.zip"包含了JDK 8u201的安装程序,特别是针对64位Linux系统的版本。JDK是Java语言开发的基础,它提供了编译、调试和运行Java应用程序所需的所有工具。 首先,让我们...

    java-jdk1.8-8u361-all-jdk-win-linux

    java-jdk1.8-8u361-all-jdk-win-linux 该压缩包中包含jdk1.8-8u361下windows版本和linux版本,其包含快速安装包和对应的jdk压缩包版本,具体内容如下: jdk-8u361-linux-aarch64.rpm jdk-8u361-linux-i586.rpm jdk-8...

    java-jdk1.8-jdk-8u192-linux-x64.zip

    这个压缩包“java-jdk1.8-jdk-8u192-linux-x64.zip”包含了用于在64位Linux系统上运行和开发Java应用程序所需的组件。JDK全称为Java Development Kit,它是Java编程语言的核心组成部分,提供了编译、调试、运行Java...

    java-jdk1.8-jdk-8u181-windows-x64.zip

    这个压缩包"java-jdk1.8-jdk-8u181-windows-x64.zip"内包含两个文件:一个是主安装程序“jdk-8u181-windows-x64.exe”,用于在Windows 64位系统上安装JDK 1.8的更新181版本;另一个是“使用说明.txt”,通常会提供...

    aspose aspose-words-23.3-jdk16 aspose-words-23.3-jdk16 aspose-w

    word java 导出 aspose aspose-words-23.3-jdk16word java 导出 aspose aspose-words-23.3-jdk16word java 导出 aspose aspose-words-23.3-jdk16word java 导出 aspose aspose-words-23.3-jdk16word java 导出 ...

    java-jdk1.8-jdk-8u191-windows-x64.zip

    关于安装步骤,描述中提到“双击安装即可”,这意味着在Windows x64环境下,用户只需要下载`jdk-8u191-windows-x64.exe`这个安装文件,然后双击运行,按照安装向导的提示进行操作,选择安装路径,确认许可协议,最后...

    java-jdk1.6-jdk-6u45-windows-x64.zip

    1. 解压缩"java-jdk1.6-jdk-6u45-windows-x64.zip"文件,这将释放出"jdk-6u45-windows-x64.exe"可执行文件。 2. 双击运行"jdk-6u45-windows-x64.exe",安装向导会引导你完成安装过程。通常,你需要选择安装路径,...

    java-jdk1.8-jdk-8u202-linux-x64.zip

    1. **下载**:首先,你需要从Oracle官方网站或者通过提供的链接(blog.csdn.net/FL1623863129/article/details/134426730)下载适用于Linux x64的`java-jdk1.8-jdk-8u202-linux-x64.zip`压缩文件。确保文件完整无损...

    java-jdk-8u152安装包java-jdk-8u152安装包java-jdk-8u152安装包

    java-jdk-8u152安装包java-jdk-8u152安装包java-jdk-8u152安装包

    bcprov-ext-jdk15on-152和bcprov-jdk15on-152

    标题中的"bcprov-ext-jdk15on-152"和"bcprov-jdk15on-152"是两个与Bouncy Castle库相关的Java档案文件,它们主要用于提供加密和安全服务。Bouncy Castle是一个开源的Java安全提供者,广泛用于密码学应用,包括加密、...

    java-jdk1.8-jdk-8u202-windows-x64.zip

    1. **下载**:从官方Oracle网站或其他可信赖的源下载`jdk-8u202-windows-x64.exe`安装程序。 2. **验证文件**:确保下载的文件完整且未被篡改,可以检查MD5或SHA校验和。 3. **双击安装**:在Windows x64系统上,...

    bcprov-jdk15on-1.54.jar bcprov-ext-jdk15on-1.54.jar下载

    2.将下载的两个JAR文件复制到:JDK安装目录\jre\lib\ext下,例如我的就是D:\Program Files (x86)\java\JDK1.6\jre\lib\ext 3.打开java.security文件:在JDK安装目录\jre\lib\security下的java.security文件。

    bcprov-ext-jdk15on-1.54.jar和bcprov-jdk15on-1.54.jar压缩文件

    《深入解析bcprov-jdk15on与bcprov-ext-jdk15on:Java加密库的秘密武器》 在Java开发中,加密技术是至关重要的,它保障了数据的安全传输和存储。bcprov-jdk15on和bcprov-ext-jdk15on是Bouncy Castle项目提供的两个...

    bcprov-ext-jdk15on-1.54.jar,bcprov-jdk15on-1.54.jar

    总之,bcprov-ext-jdk15on-1.54.jar和bcprov-jdk15on-1.54.jar是Bouncy Castle提供的Java加密库,它们包含了丰富的加密算法,特别适合处理与SSL/TLS相关的加密问题。当遇到“Could not generate DH keypair”异常时...

    bcpkix-jdk15on-1.49.jar和bcprov-jdk15on-1.49.jar

    《深入理解bcpkix-jdk15on-1.49.jar与bcprov-jdk15on-1.49.jar:构建安全的Java加密基础》 在Java开发领域,尤其是在涉及到加密、数字签名以及SSL/TLS协议的场景中,bcpkix-jdk15on-1.49.jar和bcprov-jdk15on-1.49....

    java-jdk1.8-jdk-8u191-linux-x64.zip

    这个压缩包文件“java-jdk1.8-jdk-8u191-linux-x64.zip”包含了用于在64位Linux系统上安装和使用的JDK 1.8更新191的所有必要组件。JDK(Java Development Kit)是开发和运行Java应用程序的基础,它包括了Java编译器...

    bcprov-ext-jdk15on-1.52.jar和bcprov-jdk15on-1.52.jar

    标题中的"bcprov-ext-jdk15on-1.52.jar"和"bcprov-jdk15on-1.52.jar"是两个与Java相关的库文件,它们都属于Bouncy Castle加密库的不同版本。Bouncy Castle是一个开源的Java安全套件,提供广泛的安全服务,包括加密、...

    java-jdk1.8-jdk-8u181-linux-x64.zip

    这个压缩包文件“java-jdk1.8-jdk-8u181-linux-x64.zip”包含了适用于64位Linux系统的JDK 1.8更新181版本。JDK(Java Development Kit)是开发者编写、调试和运行Java应用程序所必需的一套工具,包括Java编译器、...

    bcprov-ext-jdk15on-1.52和bcprov-jdk15on-1.52

    标题中的"bcprov-ext-jdk15on-1.52"和"bcprov-jdk15on-1.52"是两个不同版本的Java软件包,它们都是由The Legion of the Bouncy Castle(Bouncy Castle)组织提供的加密库。Bouncy Castle是一个广泛使用的开源Java...

Global site tag (gtag.js) - Google Analytics