質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

3回答

3062閲覧

Map<String, Object>型の要素の Map<String, Object>の要素にアクセスしたい

alizona

総合スコア126

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2020/08/08 22:08

Map<String, Object>型の中の Map<String, Object>の要素にアクセスしたいです。
どうすれば、いいでしょうか?

java

1 Map<String, Object> first = new HashMap<String, Object>(); 2 first.put("curve", documentSnapshot.get("part.1.curve")); 3 first.put("length", documentSnapshot.get("part.1.length")); 4 first.put("slope", documentSnapshot.get("part.1.slope")); 5 6 Map<String, Object> second = new HashMap<String, Object>(); 7 second.put("curve", documentSnapshot.get("part.2.curve")); 8 second.put("length", documentSnapshot.get("part.2.length")); 9 second.put("slope", documentSnapshot.get("part.2.slope")); 10 11 Map<String, Object> part = new HashMap<String, Object>(); 12 part.put("1", first); 13 part.put("2", second); 14 Map<String, Object> firebasePartData = new HashMap<String, Object>(); 15 firebasePartData.put("part", part); 16

java

1public void function(Map<String, Object> firebaseCourseData){ 2 3 Object o=firebasePartData.get("first"); 4 int first_curve=(Integer)Integer.parseInt(o.get("curve").toString()); 5 6}

java

1E/AndroidRuntime: FATAL EXCEPTION: main 2 Process: com.example.race_win_android, PID: 13993 3 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference 4 at com.example.race_win_android.Calculate.setResultFirebase(Calculate.java:51) 5 at com.example.race_win_android.MainActivity.calculateToFirebase(MainActivity.java:815) 6 at com.example.race_win_android.MainActivity$6.onSuccess(MainActivity.java:803) 7 at com.example.race_win_android.MainActivity$6.onSuccess(MainActivity.java:725) 8 at com.google.android.gms.tasks.zzn.run(Unknown Source:4) 9 at android.os.Handler.handleCallback(Handler.java:883) 10 at android.os.Handler.dispatchMessage(Handler.java:100) 11 at android.os.Looper.loop(Looper.java:214) 12 at android.app.ActivityThread.main(ActivityThread.java:7356) 13 at java.lang.reflect.Method.invoke(Native Method) 14 at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 15 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

partはなぜMap<String, Object>なのでしょうか。値としてMap<String, Object>を入れるとわかっているなら、partの型をMap<String, Map<String, Object>>として宣言するのが適切です。

投稿2020/08/08 22:23

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

alizona

2020/08/09 00:16 編集

無事使えるようになりました。 お世話になりました。ありがとうございます。 編集済コードは、みやすく表示するために自己解決のしたに書き直しました。
guest

0

現状の提示されたソースでは呼び出し部分がないため、わからないですが
想像するに

java

1Map<String, Object> part = new HashMap<String, Object>(); 2 part.put("1", first); 3 part.put("2", second);

このオブジェクトを渡しているなら

java

1 Object o=firebasePartData.get("1"); // part.put("1", first); に対応? 2 int first_curve=(Integer)Integer.parseInt(o.get("curve").toString());

こうかもしれません。

投稿2020/08/09 00:18

momon-ga

総合スコア4820

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

定義をこのようにしました。

java

1Map<String, Map<String,Object>>part=new HashMap<>(); 2Map<String, Map<String,Map<String, Object>>> firebasePartData = new HashMap<String, Map<String,Map<String, Object>>>(); 3firebasePartData.put("part", part);

使用する時は、このようにしてアクセスしました。

java

1int first_curve=(Integer)Integer.parseInt(firebasePartData.get("part").get("1").get("curve").toString());

投稿2020/08/09 00:15

alizona

総合スコア126

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問