Pertanyaan A 'untuk' loop untuk iterate atas enum di Jawa


Saya punya enum di Jawa untuk arah kardinal & menengah:

public enum Direction {
   NORTH,
   NORTHEAST,
   EAST,
   SOUTHEAST,
   SOUTH,
   SOUTHWEST,
   WEST,
   NORTHWEST
}

Bagaimana saya bisa menulis a for loop yang iterates melalui masing-masing ini enum nilai-nilai?


757
2017-07-09 16:24


asal


Jawaban:


.values()

Anda dapat memanggil values() metode pada enum Anda.

for (Direction dir : Direction.values()) {
  // do what you want
}

Ini values() metode ini secara implisit dideklarasikan oleh kompilator. Jadi itu tidak terdaftar Enum dokter.


1252
2017-07-09 16:27



Enum # values ​​():

 for (Direction d : Direction.values()) {
     System.out.println(d);
 }

116
2017-07-09 16:26



Anda dapat melakukan ini sebagai berikut:

for (Direction direction : EnumSet.allOf(Direction.class)) {
  // do stuff
}

56
2017-07-09 16:27



Streaming

Sebelum Java 8 kita perlu mencetak nilai menggunakan loop, seperti:

for (Direction dir : Direction.values()) {
            System.out.println(dir);
}

Tetapi di Jawa 8 kita juga dapat memanfaatkan lambda dan aliran (Tutorial):

Stream.of(Direction.values()).forEach(System.out::println);

31
2018-06-21 07:16



for(Direction dir : Direction.values())
{

}

20
2017-07-09 16:28



Jika Anda tidak peduli dengan pesanan ini, maka ini akan berhasil:

Set<Direction> directions = EnumSet.allOf(Direction.class);
for(Direction direction : directions) {
    // do stuff
}

17
2017-07-09 16:27



    for (Direction  d : Direction.values()) {
       //your code here   
    }

17
2017-07-09 16:29