11.Java 枚举和迭代器

一.枚举

枚举是一个比较特殊的类,一般为一组常量。

枚举类用enum关键字定义,其中的常量(一般为大写)由逗号,分割

public enum EnumTest {
    MONDAY("星期一", 1),
    TUESDAY("星期二", 2),
    WEDNESDAY("星期三", 3),
    THURSDAY("星期四", 4),
    FRIDAY("星期五", 5),
    SATURDAY("星期六", 6),
    SUNDAY("星期日", 7);
}

且枚举可以声明在内部类中

public class Test{

 enum EnumTest {
    MONDAY("星期一", 1),
    TUESDAY("星期二", 2),
    WEDNESDAY("星期三", 3),
    THURSDAY("星期四", 4),
    FRIDAY("星期五", 5),
    SATURDAY("星期六", 6),
    SUNDAY("星期日", 7);
}
public static void main(String[] args)
    {
        EnumTest a = EnumTest.MONDAY;
        System.out.Println(A);
    }
}
}

每个枚举都是通过 Class 在内部实现的,且所有的枚举值都是 public static final 的。

以上的枚举类 EnumTest 转化在内部类实现

class EnumTest
{
     public static final EnumTest MONDAY = new EnumTest();
     public static final EnumTest TUSEDAY = new EnumTest();
     public static final EnumTest WEDNESDAY = new EnumTest();
}

迭代枚举的元素(增强for循环)

enum EnumTest {
    MONDAY("星期一", 1),
    TUESDAY("星期二", 2),
    WEDNESDAY("星期三", 3),
    THURSDAY("星期四", 4),
    FRIDAY("星期五", 5),
    SATURDAY("星期六", 6),
    SUNDAY("星期日", 7);
}
public class MyClass {
  public static void main(String[] args) {
    for (EnumTest a : EnumTest.values()) {
      System.out.println(a);
    }
  }
}

编译器生成的Values方法与ValueOf方法
values()方法和valueOf(String name)方法是编译器生成的static方法,因此从前面的分析中,在Enum类中并没出现values()方法,但valueOf()方法还是有出现的,只不过编译器生成的valueOf()方法需传递一个name参数,而Enum自带的静态方法valueOf()则需要传递两个方法,从前面反编译后的代码可以看出,编译器生成的valueOf方法最终还是调用了Enum类的valueOf方法


 

枚举类中抽象方法的实现,需要枚举类中的每个对象都对其实现

enum Color{
    RED{
        public String getColor(){//枚举对象实现抽象方法
            return "红色";
        }
    },
    GREEN{
        public String getColor(){//枚举对象实现抽象方法
            return "绿色";
        }
    },
    BLUE{
        public String getColor(){//枚举对象实现抽象方法
            return "蓝色";
        }
    };
    public abstract String getColor();//定义抽象方法
}

public class Test{
    public static void main(String[] args) {
        for (Color c:Color.values()){
            System.out.print(c.getColor() + "、");
        }
    }
}

二.Iterator(迭代器)

Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合。在 Java 类库中,集合类的基本接口是 Collection 接口。

引入Iterator类

import java.util.Iterator;

Iterator接口包含4个方法:

public interface Iterator<E> { 
   E next(); 
   boolean hasNext(); 
   void remove(); 
   default void forEachRemaining(Consumer<? super E> action); 
} 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值