首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >EnumSet到底是什么意思?

EnumSet到底是什么意思?
EN

Stack Overflow用户
提问于 2012-08-06 16:44:11
回答 5查看 62K关注 0票数 72

我有下面的例子:

import java.util.EnumSet;
import java.util.Iterator;

public class SizeSet {

    public static void main(String[] args) {
        EnumSet largeSize = EnumSet.of(Size.XL,Size.XXL,Size.XXXL);
        for(Iterator it = largeSize.iterator();it.hasNext();){
            Size size = (Size)it.next();
            System.out.println(size);
        }
    }
}


enum Size {
  S, M, L, XL, XXL, XXXL;

}

在这段代码中,我可以理解Enum创建了一个大小为Size的Enum类型。

我的问题是:largeSize是EnumSet类型的对象吗?它的真正含义是什么?我真的很想更好地理解它。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-08-06 16:59:12

对于任何变量,其类型都可以在其声明中找到:

EnumSet largeSize

所以,是的,largeSize (应该命名为largeSizes,因为它是一个集合)是EnumSet类型。它也应该被泛化,并因此被声明为

EnumSet<Size> largeSizes

它的意思是,largeSizesEnumSet类型。EnumSet是一个Set,它包含特定枚举类型的枚举实例,其方式比其他Set实现(如HashSetTreeSet等)更有效。要了解EnumSet是什么,请阅读它的API

票数 48
EN

Stack Overflow用户

发布于 2012-08-06 17:22:13

简化您的代码

EnumSet<Size> largeSize = EnumSet.of(Size.XXXL, Size.XXL, Size.XL, Size.L);
for(Size size: largeSize)
    System.out.print(size+" ");

你可以看到largeSize是一个常规的集合,除了它是用来存储枚举的。这有什么不同呢?首先,JVM知道集合的所有可能值,这意味着它可以使用位图而不是存储所有对象,其中1表示项存在,0表示项不存在。这也意味着集合的顺序是序数值的顺序,即它们被定义的顺序。这就是为什么这个打印出来

L XL XXL XXXL

如果您想了解更多细节,我建议您阅读本课程的源代码。

票数 40
EN

Stack Overflow用户

发布于 2015-01-09 16:43:47

EnumSet专门用于存储枚举类型元素并快速迭代它。例如:

for (Day d : EnumSet.range(Day.MONDAY, Day.FRIDAY))
        System.out.println(d);

上面的代码片段将显示一周中从星期一到星期五的日期。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11825009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档