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ランキング
-
範囲外の数値を代入したらエラ...
-
Java throwとthrowsの違いについて
-
C#でほかのファイルにある自作...
-
a href="..." とServlet
-
Genericsの型パラメータ
-
ActionListener について
-
関数内の変数に<summary>コメン...
-
java-別クラスの変数の使い方を...
-
3種類の連想配列(java)
-
Tomcatのpropertiesファイルの...
-
Javaコンストラクタthisとsuper...
-
Publicとは?
-
import と extends について
-
super.paint(g)を呼び出す意...
-
C#にて別クラスの関数を使いたい
-
クラス間でのデータ参照
-
「タイプ初期化子が例外をスロ...
-
配列の重複する値とその個数を...
-
インスタンス参照でアクセスで...
-
日本の教育って時間が無い中で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
クラス間でのデータ参照
-
関数内の変数に<summary>コメン...
-
c++,ある関数のクラスから別の...
-
範囲外の数値を代入したらエラ...
-
C#にて別クラスの関数を使いたい
-
無名パッケージからのインポート
-
java-別クラスの変数の使い方を...
-
SwingでgetContentPaneのエラー...
-
C++でfriendクラスにしているの...
-
C#でほかのファイルにある自作...
-
Java
-
Java リフレクションについて
-
import と extends について
-
C#のクラスライブラリでメッセ...
-
a href="..." とServlet
-
ひとつのファイルにクラスは1つ?
-
構造 他のクラスの構造体を別...
-
親クラスから子クラスへアクセス。
-
内部クラスのインスタンスを外...
-
visual studioのデザイナ画面で...
おすすめ情報
質問が上手く伝わらずすいません。
上記例では、1という数字(key)に対して、値が二つ以上ある場合、
条件によって取得する値をどういった感じで取得できる方法が知りたいです。