- 浏览: 62741 次
- 性别:
- 来自: 成都
文章分类
最新评论
//一个基于枚举的Set,其效率在大多数时候都比HashSet高。 //该类是一个抽象类其实现类有RegularEnumSet和JumboEnumSet。 //创建一个最初包含指定元素的枚举(带of的方法实现基本都一样) public static <E extends Enum<E>> EnumSet<E> of(E e) { EnumSet<E> result = noneOf(e.getDeclaringClass()); result.add(e); return result; } public static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> elementType) { //根据elementType获取枚举 Enum[] universe = getUniverse(elementType); if (universe == null) throw new ClassCastException(elementType + " not an enum"); //根据长度的不同调用不同的实现 if (universe.length <= 64) return new RegularEnumSet<>(elementType, universe); else return new JumboEnumSet<>(elementType, universe); } //包含指定元素类型的所有枚举 public static <E extends Enum<E>> EnumSet<E> allOf(Class<E> elementType) { EnumSet<E> result = noneOf(elementType); result.addAll(); return result; } //构造一个和指定枚举相同的EnumSet。 public static <E extends Enum<E>> EnumSet<E> copyOf(EnumSet<E> s) { return s.clone(); } //从指定collection中初始化的一个EnumSet public static <E extends Enum<E>> EnumSet<E> copyOf(Collection<E> c) { if (c instanceof EnumSet) { return ((EnumSet<E>)c).clone(); } else { if (c.isEmpty()) throw new IllegalArgumentException("Collection is empty"); Iterator<E> i = c.iterator(); E first = i.next(); EnumSet<E> result = EnumSet.of(first); while (i.hasNext()) result.add(i.next()); return result; } } //包含指定set中不包含的所有元素 public static <E extends Enum<E>> EnumSet<E> complementOf(EnumSet<E> s) { EnumSet<E> result = copyOf(s); result.complement(); return result; }
发表评论
-
读Collections源码
2017-10-11 14:53 272//一个操作集合的工具类,里面全部都是静态方法。 / ... -
读EnumMap源码
2017-10-06 15:23 398//一个key是枚举类型的map,速度基本会比hashMa ... -
读IdentityHashMap源码
2017-10-06 11:11 376//和HashMap的主要区别在于判断key的相等采用的是 ... -
读Stack源码
2017-10-05 10:14 295//一个堆栈结构的集合(先进后出)继承于Vector / ... -
读Properties
2017-10-03 23:02 0//一个继承于Hashtable的键值对。 //先看 ... -
读WeakHashMap源码
2017-09-28 17:06 357//一个基于弱引用的Map对象 //先看构造函数 ... -
读ArrayDeque源码
2017-09-26 13:38 275//一个双端队列 比stack ... -
读TreeMap源码
2017-09-13 11:21 376//一个基于二叉红黑树实现的map //关于红黑树htt ... -
读HashSet源码
2017-08-29 11:33 305//先看构造函数 public HashSet() { ... -
读LinkedList源码
2017-08-29 10:49 369//List的链表实现,先看构造函数 public L ... -
读LinkedHashMap源码
2017-08-28 11:03 490//LinkedHashMap继承了HashMap,他和H ... -
读ArrayList源码
2017-08-26 16:30 300//先看构造函数 public ArrayList() ... -
读HashMap源码
2017-08-24 13:37 374//先看构造函数 public HashMap() { ... -
读priorityQueen源码
2017-08-07 10:47 366//先看构造方法。 public PriorityQue ... -
TreeSet集合的体系架构
2017-04-19 16:32 305... -
TreeMap集合的体系架构
2017-04-19 16:29 292... -
ImmutableSortedSet集合的实现体系架构
2017-04-19 16:32 258... -
ImmutableSortedMap集合的体系架构
2017-04-20 17:50 543... -
ImmutableSet集合的实现体系架构
2017-04-19 16:28 241... -
ImmutableMap集合的体系架构
2017-04-19 16:28 417...
相关推荐
了解EnumSet抽象类的源码和实现机制 EnumSet抽象类是Java枚举类型的泛型容器,具有速度快、占用内存小、效率高等特性。EnumSet的设计是专门为枚举类的集合类,所有元素必须是枚举类型,集合元素是有序的,内部以位...
EnumSet 是 Java 中用于存储枚举类型元素的集合类。它是 AbstractSet 的子类,并专门为枚举类型设计,提供了高效的实现。 下面是关于 EnumSet 的一些重要信息: 存储枚举元素:EnumSet 只能存储同一个枚举类型的...
然而,《Effective Java》第二版中提到,Java提供了一个更好的替代方案:`EnumSet`。本文将深入探讨`EnumSet`如何代替位域,并通过代码示例展示其优势。 位域使用`int`或`byte`等整型常量来存储一系列标志,例如: ...
16. **EnumSet和EnumMap**:针对枚举类型的特殊集合实现,效率较高。 17. **ConcurrentHashMap**:线程安全的哈希表,是高并发场景下的常用数据结构。 18. **CountDownLatch和CyclicBarrier**:同步原语,用于多...
这篇博客将深入探讨Java枚举的特性和使用方法,包括`EnumSet`和`EnumMap`这两个与枚举相关的数据结构。 首先,枚举定义的基本语法是`public enum EnumName {constant1, constant2, ...}`。每个枚举常量都是`...
JDK1.8为`EnumSet`和`EnumMap`增加了新的静态工厂方法,使得创建枚举集合更加方便。 十、动态类型语言支持 JDK1.8增加了对动态类型语言的支持,如GraalVM,使得Java可以更好地与其他动态语言交互。 以上只是JDK1.8...
EnumSet是Java枚举类型的泛型容器,Java既然有了SortedSet、TreeSet、HashSet等容器,为何还要多一个EnumSet呢?答案肯定是EnumSet有一定的特性,举个例子,EnumSet的速度很快。其他特性不一一列举了,毕竟本文的...
【EnumMap和EnumSet详解】 在Java编程中,当我们需要处理特定枚举类型(Enum)作为键(Key)的映射关系时,EnumMap和EnumSet成为两种非常实用的工具类。它们是Java集合框架中专门为枚举类型设计的高效容器,提供了...
本文总结了Effective Java 中关于枚举与注解的知识点,涵盖了枚举类型的优点、使用指南、避免使用 int 常量、使用 EnumSet 和 EnumMap 等。 枚举类型的优点 枚举类型提供了编译时类型安全、自动命名空间隔离、可以...
还有EnumSet和EnumMap,专门为枚举类型设计的高效集合实现。 在本次研讨会的实例代码中,你将看到如何创建、遍历、修改和操作这些集合的示例。这些代码涵盖了基本操作、性能测试、并发控制等方面,帮助你更好地理解...
同时,注解在枚举中也有应用,如EnumSet和EnumMap。 通过这个源码包,你可以跟随《Thinking in Java》第四版的章节,逐个探索和实践每一个主题,加深对Java编程的理解,提升编程技能。同时,这也是一个很好的自我...
enumset一个用于定义可在紧凑位集中使用的枚举的库。 它支持最多128个变量的枚举,并具有在枚举中使用这些集合的宏。用于定义可在紧凑位集中使用的枚举的库。 它支持最多128个变量的枚举,并具有一个宏以在常量中...
本文将深入探讨Java中四个主要的Set实现类:HashSet、LinkedHashSet、TreeSet以及EnumSet。 首先,Set集合的核心特性是不存储重复元素。在尝试通过`add()`方法添加相同元素时,如果集合中已经存在该元素,`add()`...
目录介绍特征安装用法设置一个MappedValueRepresentable枚举使用MappedValueCollectionRepresented 使用MappedEnum类型的可编码枚举在ESet中使用OptionSet中的EnumSet 将EnumSet转换为Enum数组使用...
6. **改进的枚举类型**:JDK7增强了枚举类型的功能,比如`java.util.EnumSet`和`java.util.EnumMap`的优化,提供了高效的集合操作。 7. **开关表达式**:虽然开关表达式(switch-on-string)在JDK7中并未完全实现,...
《Collections源码解析:以Java实现的2D侧滚动资源收集游戏RockBottom》 在Java编程领域,理解并深入研究源代码是提升技术能力的重要途径。本文将针对标题中的"Collections源码java-RockBottom:2D侧滚动资源收集...
hashmap源码 Effective Java 3th 索引 创建和销毁对象 考虑使用静态工厂方法代替构造方法 优点: 有名字 每次调用的时候,不一定要创建新的对象 可以返回一个类型的子类型 Collections就是这种用法 返回对象的类可以...
2. **枚举类型(Enum)的改进**:新增了`EnumSet`和`EnumMap`类,这两个类专门用于枚举类型的集合操作,提供了高效且类型安全的实现。 3. **NIO.2(New I/O 2)**:引入了`java.nio.file`包,提供了新的文件系统API...
此外,Java集合框架还包括`EnumSet`(枚举集)、`CopyOnWriteArrayList`和`CopyOnWriteArraySet`(线程安全的集合)以及`ConcurrentHashMap`(并发友好的哈希映射)等高级数据结构。 在源码学习中,理解这些类和...
Set是Java集合类的重要...使用EnumSet类的add()方法添加元素,使用EnumSet类的remove()方法删除元素,使用EnumSet类的complementOf()方法获取对象的全部,使用EnumSet类的range()方法获取指定范围的元素。 代码如下