[Java] Enumクラスのvaluesメソッドの使い方
Enumクラス
のvaluesメソッド
は、列挙型に定義されたすべての定数を配列として返す静的メソッドです。
これにより、列挙型のすべての値を簡単に反復処理できます。
使い方としては、まず列挙型を定義し、その列挙型のvaluesメソッド
を呼び出します。
例えば、Day
という列挙型がある場合、Day.values()
を呼び出すことで、Day
に定義されたすべての曜日を配列として取得できます。
これをfor-each
ループで使用することで、各定数に対して処理を行うことが可能です。
- Enumクラスの基本的な使い方
- valuesメソッドの具体的な利用法
- Enumの値をリストやマップに変換する方法
- その他のEnumメソッドの機能
- Enumの特性と制約についての理解
valuesメソッドの基本
JavaのEnumクラス
は、定数の集合を表現するための特別なクラスです。
Enumクラス
には、定義されたすべての列挙定数を配列として取得するためのvaluesメソッド
があります。
このメソッドは、Enum型
に対して自動的に生成され、列挙定数を簡単にループ処理したり、配列として扱ったりすることができます。
valuesメソッド
を使用することで、Enumの各定数にアクセスしやすくなり、コードの可読性や保守性が向上します。
特に、定数の数が多い場合や、特定の処理を全ての定数に対して行いたい場合に非常に便利です。
valuesメソッドの使い方
配列としての取得
valuesメソッド
を使用すると、Enum型
のすべての定数を配列として取得できます。
これにより、定数の数や値を簡単に確認することができます。
以下は、Enumを定義し、valuesメソッド
を使って定数を配列として取得するサンプルコードです。
// App.java
enum Color {
RED, GREEN, BLUE
}
public class App {
public static void main(String[] args) {
// Enumのすべての定数を配列として取得
Color[] colors = Color.values();
// 配列の内容を表示
for (Color color : colors) {
System.out.println(color);
}
}
}
RED
GREEN
BLUE
このコードでは、Color
というEnumを定義し、valuesメソッド
を使ってすべての色を配列として取得しています。
for-eachループでの利用
valuesメソッド
を使うことで、for-eachループを利用してEnumの各定数に対して処理を行うことができます。
以下のサンプルコードでは、Enumの各定数を表示する方法を示しています。
// App.java
enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
public class App {
public static void main(String[] args) {
// Enumのすべての定数をfor-eachループで表示
for (Day day : Day.values()) {
System.out.println(day);
}
}
}
MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY
SUNDAY
このコードでは、Day
というEnumを定義し、for-eachループを使ってすべての曜日を表示しています。
配列の操作方法
valuesメソッド
で取得した配列は、通常の配列と同様に操作することができます。
例えば、配列の長さを取得したり、特定のインデックスの値にアクセスしたりすることが可能です。
以下のサンプルコードでは、配列の長さを取得し、特定の定数にアクセスする方法を示しています。
// App.java
enum Fruit {
APPLE, BANANA, ORANGE
}
public class App {
public static void main(String[] args) {
// Enumのすべての定数を配列として取得
Fruit[] fruits = Fruit.values();
// 配列の長さを表示
System.out.println("フルーツの数: " + fruits.length);
// 特定のインデックスの値を表示
System.out.println("1番目のフルーツ: " + fruits[1]);
}
}
フルーツの数: 3
1番目のフルーツ: BANANA
このコードでは、Fruit
というEnumを定義し、valuesメソッド
を使ってフルーツの配列を取得しています。
配列の長さや特定のインデックスの値を表示することで、配列の操作方法を示しています。
valuesメソッドの応用例
Enumの値をリストに変換
valuesメソッド
を使用して取得したEnumの値を、JavaのList
に変換することができます。
これにより、リスト特有の操作(例えば、検索やフィルタリング)が可能になります。
以下のサンプルコードでは、Enumの値をリストに変換する方法を示しています。
// App.java
import java.util.Arrays;
import java.util.List;
enum Animal {
DOG, CAT, BIRD
}
public class App {
public static void main(String[] args) {
// Enumの値をリストに変換
List<Animal> animalList = Arrays.asList(Animal.values());
// リストの内容を表示
for (Animal animal : animalList) {
System.out.println(animal);
}
}
}
DOG
CAT
BIRD
このコードでは、Animal
というEnumを定義し、valuesメソッド
を使って取得した値をList
に変換しています。
Enumの値をマップに変換
Enumの値をキーとして、関連する値を持つMap
に変換することも可能です。
これにより、Enumの値に基づいて特定の情報を効率的に管理できます。
以下のサンプルコードでは、Enumの値をマップに変換する方法を示しています。
// App.java
import java.util.HashMap;
import java.util.Map;
enum Country {
JAPAN("Tokyo"),
USA("Washington D.C."),
FRANCE("Paris");
private final String capital;
Country(String capital) {
this.capital = capital;
}
public String getCapital() {
return capital;
}
}
public class App {
public static void main(String[] args) {
// Enumの値をマップに変換
Map<Country, String> countryMap = new HashMap<>();
for (Country country : Country.values()) {
countryMap.put(country, country.getCapital());
}
// マップの内容を表示
for (Map.Entry<Country, String> entry : countryMap.entrySet()) {
System.out.println(entry.getKey() + "の首都: " + entry.getValue());
}
}
}
JAPANの首都: Tokyo
USAの首都: Washington D.C.
FRANCEの首都: Paris
このコードでは、Country
というEnumを定義し、各国の首都を関連付けたマップを作成しています。
Enumの値をソートする
Enumの値をソートすることも可能です。
Enumの定数は、定義された順序で自動的にソートされますが、特定の条件に基づいてソートすることもできます。
以下のサンプルコードでは、Enumの値をソートする方法を示しています。
// App.java
import java.util.Arrays;
import java.util.Comparator;
enum Size {
SMALL, MEDIUM, LARGE
}
public class App {
public static void main(String[] args) {
// Enumの値を配列として取得
Size[] sizes = Size.values();
// サイズをソート
Arrays.sort(sizes, Comparator.comparingInt(Size::ordinal));
// ソートされたサイズを表示
for (Size size : sizes) {
System.out.println(size);
}
}
}
SMALL
MEDIUM
LARGE
このコードでは、Size
というEnumを定義し、ordinalメソッド
を使ってサイズをソートしています。
これにより、Enumの値を特定の順序で表示することができます。
Enumクラスのその他のメソッド
valueOfメソッド
valueOfメソッド
は、指定した文字列に対応するEnumの定数を取得するためのメソッドです。
このメソッドは、Enum型
に対して自動的に生成され、引数として渡された文字列がEnumの定数名と一致する場合、その定数を返します。
以下のサンプルコードでは、valueOfメソッド
の使い方を示しています。
// App.java
enum Season {
SPRING, SUMMER, FALL, WINTER
}
public class App {
public static void main(String[] args) {
// 文字列からEnumの定数を取得
Season season = Season.valueOf("SUMMER");
// 取得したEnumの定数を表示
System.out.println("選択された季節: " + season);
}
}
選択された季節: SUMMER
このコードでは、Season
というEnumを定義し、valueOfメソッド
を使って文字列からEnumの定数を取得しています。
ordinalメソッド
ordinalメソッド
は、Enumの定数が定義された順序に基づいて、その定数のインデックスを返します。
インデックスは0から始まり、定義された順序に従って増加します。
以下のサンプルコードでは、ordinalメソッド
の使い方を示しています。
// App.java
enum Direction {
NORTH, EAST, SOUTH, WEST
}
public class App {
public static void main(String[] args) {
// Enumの定数のインデックスを表示
for (Direction direction : Direction.values()) {
System.out.println(direction + "のインデックス: " + direction.ordinal());
}
}
}
NORTHのインデックス: 0
EASTのインデックス: 1
SOUTHのインデックス: 2
WESTのインデックス: 3
このコードでは、Direction
というEnumを定義し、各定数のインデックスを表示しています。
nameメソッド
nameメソッド
は、Enumの定数の名前を文字列として取得するためのメソッドです。
このメソッドは、Enumの定数に対して自動的に生成され、定数の名前をそのまま返します。
以下のサンプルコードでは、nameメソッド
の使い方を示しています。
// App.java
enum Vehicle {
CAR, TRUCK, MOTORCYCLE
}
public class App {
public static void main(String[] args) {
// Enumの定数の名前を表示
for (Vehicle vehicle : Vehicle.values()) {
System.out.println(vehicle + "の名前: " + vehicle.name());
}
}
}
CARの名前: CAR
TRUCKの名前: TRUCK
MOTORCYCLEの名前: MOTORCYCLE
このコードでは、Vehicle
というEnumを定義し、各定数の名前を表示しています。
nameメソッド
を使用することで、Enumの定数の名前を簡単に取得できます。
よくある質問
まとめ
この記事では、JavaのEnumクラス
におけるvaluesメソッド
の使い方やその応用例、さらにEnumクラス
のその他のメソッドについて詳しく解説しました。
Enumは、定数の集合を扱うための強力な機能を提供し、特にvaluesメソッド
を利用することで、定数を簡単に取得したり、操作したりすることが可能です。
これを機に、Enumを活用してより効率的なコードを書くことに挑戦してみてください。