int[] no = {1, 2, 3 ,4};
String[] roma = {"Ⅰ", "Ⅱ", "Ⅲ", "Ⅳ"};
String[] jap = {"いち", "に", "さん", "よん"};
javaで上記のような三種類の定数を管理したいのですが、
どういったアイデアが考えられますか?
・クラスを作って no, roma , japを管理する
4回ループしてクラスを作成
new Manage(int no, String roma, String jap)
・Mapでまとめる
Map<Integer, Map<String, String>> manage = new HashMap<Integer, Map<String, String>>();
for (4回ループ) {
manage.put(1, new HashMap<String, String>());
manage.get(1).put("Ⅰ", "いち");
}
こんな方法しか思いつかないもので、もっと簡潔に書けないものでしょうか?
No.3ベストアンサー
- 回答日時:
う~ん、キーがひとつなら複数のMap、複数のキーなら
MapのMapが素直でしょう。クラスでラップして
使いやすくすればよいでしょう。
enumの独自コンストラクタ、独自属性というのはまず使われないので
読めるプログラマはほぼ皆無。プロジェクトの中で使ったりすると
ひと騒動起きると思いますよ。
enum は c の enum以上の使い方は出来るだけ避けるべきでしょう。
Javaは短く書くよりわかりやすくが信条の言語。
プログラマの自己満足より、読む人のことを考えましょう。
返答ありがとうございます。
クラスでラップして使うというのはこんな感じですかね?
OriginalClass(String roma, String jap);
Map<interger, OrignalClass>;
ちなみにAndroidでコーディングしているので、調べて見たところ丁度Pairクラスというのが
あり、そちらを使うこととしました。
https://developer.android.com/reference/android/ …
Map map = new HashMap<1, Pair.create("Ⅰ", "いち");
map.get(1).first;//Ⅰ
map.get(1).second;//いち
>enum は c の enum以上の使い方は出来るだけ避けるべきでしょう。
そうなんですか?結構エレガントな Enum使い方とか紹介されており、当方は使ってたりします。
http://futurismo.biz/archives/2768
メモリはCより食うと思いますが
No.1
- 回答日時:
Java の列挙型(enum)はいかがでしょうか。
public enum Manage {
ONE(1,"I","いち"), TWO(2,"II","に"), THREE(3,"III","さん");
public final int no;
public final String ro;
public final String ja;
private Manage(int n, String r, String j) { no=n; ro=r; ja=j; }
}
// 使い方
int n = Manage.ONE.no;
有難うございます。
自分でもこの方法がスマートなのかなと思ったりします。
java歴は業務で5年程ありますが、未だ簡単に実装しようとすると遠回りなコードを
書いてる気がしてスマートな方法があればと思い、質問させて頂きました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java java final 1 2022/06/10 22:49
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- C言語・C++・C# C++初心者です stirng 2 2022/09/20 20:43
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クラス間でのデータ参照
-
c++,ある関数のクラスから別の...
-
関数内の変数に<summary>コメン...
-
C# log4netの使い方
-
import と extends について
-
親クラスから子クラスへアクセス。
-
visual studioのデザイナ画面で...
-
C#にて別クラスの関数を使いたい
-
ClassLoader.getSystemResource...
-
java-別クラスの変数の使い方を...
-
範囲外の数値を代入したらエラ...
-
無名パッケージからのインポート
-
Java
-
JTableのイベント取得方法
-
C#でほかのファイルにある自作...
-
構造 他のクラスの構造体を別...
-
C++でfriendクラスにしているの...
-
javaでメインクラスが見つから...
-
外部からメンバ変数の中身を取...
-
アップキャスト、ダウンキャス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数内の変数に<summary>コメン...
-
C#にて別クラスの関数を使いたい
-
c++,ある関数のクラスから別の...
-
親クラスから子クラスへアクセス。
-
C#でほかのファイルにある自作...
-
クラス間でのデータ参照
-
構造 他のクラスの構造体を別...
-
範囲外の数値を代入したらエラ...
-
ひとつのファイルにクラスは1つ?
-
C++でfriendクラスにしているの...
-
Java リフレクションについて
-
継承したクラス側のクラス名の取得
-
C# インターフェイスの実装
-
java-別クラスの変数の使い方を...
-
C#のクラスライブラリでメッセ...
-
visual studioのデザイナ画面で...
-
C# log4netの使い方
-
a href="..." とServlet
-
アップキャスト、ダウンキャス...
-
オブジェクトのデータをもとにX...
おすすめ情報
質問が上手く伝わらずすいません。
上記例では、1という数字(key)に対して、値が二つ以上ある場合、
条件によって取得する値をどういった感じで取得できる方法が知りたいです。