プロが教えるわが家の防犯対策術!

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("Ⅰ", "いち");
}

こんな方法しか思いつかないもので、もっと簡潔に書けないものでしょうか?

質問者からの補足コメント

  • 質問が上手く伝わらずすいません。
    上記例では、1という数字(key)に対して、値が二つ以上ある場合、
    条件によって取得する値をどういった感じで取得できる方法が知りたいです。

    No.2の回答に寄せられた補足コメントです。 補足日時:2017/02/10 01:06

A 回答 (3件)

う~ん、キーがひとつなら複数のMap、複数のキーなら


MapのMapが素直でしょう。クラスでラップして
使いやすくすればよいでしょう。

enumの独自コンストラクタ、独自属性というのはまず使われないので
読めるプログラマはほぼ皆無。プロジェクトの中で使ったりすると
ひと騒動起きると思いますよ。

enum は c の enum以上の使い方は出来るだけ避けるべきでしょう。

Javaは短く書くよりわかりやすくが信条の言語。
プログラマの自己満足より、読む人のことを考えましょう。
    • good
    • 0
この回答へのお礼

返答ありがとうございます。

クラスでラップして使うというのはこんな感じですかね?
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より食うと思いますが

お礼日時:2017/02/11 01:24

>定数を管理したいのですが



管理というのは具体的に何をしたいのでしょう?
何をキーにしてどう関連付けて取り出したいのでしょうか?
この回答への補足あり
    • good
    • 0

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;
    • good
    • 1
この回答へのお礼

有難うございます。
自分でもこの方法がスマートなのかなと思ったりします。
java歴は業務で5年程ありますが、未だ簡単に実装しようとすると遠回りなコードを
書いてる気がしてスマートな方法があればと思い、質問させて頂きました。

お礼日時:2017/02/10 01:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!