電子書籍の厳選無料作品が豊富!

javaのinteger型のキーを持つmapをint型の変数で値を呼び出す、または同じ変数でint型からintegerに変換する方法はあるのでしょうか?
宜しくお願いします。

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

  • クラス型のIntegerです

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/04/15 00:10
  • 回答ありがとうございます。
    boxingはひとつの変数だけで簡潔させる方法はあるのでしょうか?
    例intのAという変数をIntegerのAという変数に変換する

    それともIntegerとして使用したい時だけInteger.valueOf(A)ということでしょうか?

    No.3の回答に寄せられた補足コメントです。 補足日時:2021/04/15 13:40
  • うーん・・・

    試したところ今度はgetValueがIntegerに適用できないとなります。get元のmapのキーはInteger型なのでgetがIntegerに対応してないということでしょうか?
    putはintのままでもエラーなくできています。

      補足日時:2021/04/15 13:58
  • int A = 1;
    HashMap<Integer, String> trymap = new HashMap<>();
    trymap.put(1,"apple");
    trymap.put(2,"carrot");
    trymap.put(3,"orenge");
    trymap.put(4,"potato");
    System.out.println("果物は");
    for(HashMap.Entry<Integer, String> b:trymap.entrySet()){
    System.out.println(b.getValue(Integer.valueOf(a)));
    System.out.println(b.getValue(Integer.valueOf(a)));
    }

    No.4の回答に寄せられた補足コメントです。 補足日時:2021/04/15 16:25
  • 以上だと
    getValue(Integer)に適用できないと言われ、教えていただいた
    System.out.println(map.get(a));
    だとmapで未定義だと言われます。
    条件は変数aを使う、entrySetメソッドを使用する、拡張for文を使用して出力する
    です。

      補足日時:2021/04/15 16:26
  • すいません変数aは変数Aのことです。手入力したので間違ってました。
    テキストにはentrySetはキーと値のセットを取得と記載されていてそこからgetKeyでキーをgetValueで値を取り出すとなっていたのですが私の解釈違いなのですね。

    No.5の回答に寄せられた補足コメントです。 補足日時:2021/04/15 17:58
  • //entrySetを使用してMapに含まれる要素の「キー/値」のセットを取得

    と記載されています。その後getKeyでキーをgetValueで値を出力するコードが例でのっています。


    System.out.println(b.getValue(Integer.valueOf(A)));
    System.out.println(b.getValue(Integer.valueOf(A+2)));
    ですね。
    値だけを取り出すのであれば拡張for文を使う場合はfor(HashMapEntry‹Integer,String› b:trymap.entryset())
    だとbにはキーにnull、値はそのまま値が順番に格納されているのでしょうか?

    No.6の回答に寄せられた補足コメントです。 補足日時:2021/04/15 22:26
  • その他の部分は前途の補足に記載しております。(import やpublic static void main等を除く)
    HashMap、Mapどちらでもエラーなく、その部分は正常に結果がでていたのでそのままにしていました。

    No.7の回答に寄せられた補足コメントです。 補足日時:2021/04/15 23:53
  • int A = 1;
    HashMap<Integer, String> trymap = new HashMap<>();
    trymap.put(1,"apple");
    trymap.put(2,"carrot");
    trymap.put(3,"orenge");
    trymap.put(4,"potato");
    System.out.println("果物は");
    for(HashMap.Entry<Integer, String> b:trymap.entrySet()){
    System.out.println(b.getValue(Integer.valueOf(A)));
    System.out.println(b.getValue(Integer.valueOf(A+2)));
    }

    No.8の回答に寄せられた補足コメントです。 補足日時:2021/04/16 10:03
  • 文字制限につきクラスやインポートは省略、最後のprintlnの部分を
    b.getValue(valueOf(A))
    〉〉メソッドvalueOf(int)は型testで未定義です
    b.get(Integer.valueOf(A))
    〉〉メソッドget(Integer)は型HashMap.Entry‹Integer,String›で未定義です
    b.get(A)
    〉〉メソッドget(int)は型HashMap.Entry‹Integer,String›で未定義です
    trymap.get(A) + trymap.get(A+2)
    break;
    〉〉正常に動作及び結果
    breakを使わず、bとAを使い果物(Mapの値)だけを出力したいです。
    単純に正常に動くコードのtrymapをbに置換すると
    メソッドget(int)は型HashMap.Entry‹Integer,String›で未定義です
    とでる

      補足日時:2021/04/16 10:22

A 回答 (11件中1~10件)

どうしても EntrySet でリニアサーチしたいなら、ばかげているけど



import java.util.HashMap;

public class Test {
 public static void main(String[] args) {
  var trymap = new HashMap<Integer, String>();

  trymap.put(1,"apple");
  trymap.put(2,"carrot");
  trymap.put(3,"orenge");
  trymap.put(4,"potato");

  System.out.println("果物は");

  for(var b:trymap.entrySet()) {
   int key = b.getKey();
   String value = b.getValue();

if (key == 1 || key == 3) {
    System.out.println("key = " + key + ", value = " + value);
   }
  }
 }
}

多分あなたの勘違いの結果だろうから、人に見せちゃだめだよ。
正気を疑われます。
    • good
    • 0

>trymapにするとエラーはありませんご今度は


>bが使われていないため条件を満たしません

条件?

キーが1、3の「果物」を取り出すという話では
ないのでしょうか?

何のためにEntrySetでループを回すのでしょう?

ハッシュの辞書をリ二ア検索したい?

まだまだ各コ一ドの意味するところを
理解せずにただ並べているだけ
という気がします。
    • good
    • 0
この回答へのお礼

つらい・・・

結果としては果物を取り出すのですがbを使わない=entrySet+拡張for文を活用できていないので条件を満たしません。
条件は前途に記載しましたが変数A、拡張for文、entrySetの利用です。
その上で果物を取り出す必要があります。

お礼日時:2021/04/16 14:46

b>.getValue(valueOf(A))



valueOf メソッドを Test が持ってないから呼べないのは当然、
また EntryのgetValueメソッドは引数を取りません。

>b.get(Integer.valueOf(A))
>b.get(A)

Entryには getメソッドは無いです。

そもそも Entry は辞書に含まれている 個々のキー/値ペアなので
Entryで辞書は検索できませんし無意味です。

>>trymap.get(A) + trymap.get(A+2)
>>break;
>breakを使わず、bとAを使い果物(Mapの値)だけを出力したいです。

ループの外に書きましょう。
    • good
    • 0
この回答へのお礼

もう補足できませんのでこちらで、ループの外にだすとb.getの部分でbを解決できませんと言われ、bをtrymapにするとエラーはありませんご今度はbが使われていないため条件を満たしません。

お礼日時:2021/04/16 13:04

>System.out.println(map.get(a));



trymap じゃないから なんてオチじゃないよね。

いずれにしても私自身何万回も使ってきた書き方だから
あなたのコードはどっかおかしいはず。
ちょろっと書かず、ソース全てとコンパイルエラーを
正確に示そう。
この回答への補足あり
    • good
    • 0

プログラムの一部分だけを切り出して「どう」って聞かれても困る.



その「例」
System.out.println(b.getValue(Integer.valueOf(A)));
System.out.println(b.getValue(Integer.valueOf(A+2)));
における A や b の型ってなに?

そしてもちろん
「bにはキーにnull、値はそのまま値が順番に格納されている」
なんてことはない. 「順番」がどのような「順番」なのかわからないし, わざわざ「null を格納する」なんて面倒くさいことをする意味もないじゃないか.

あと HashMapEntry ってなんだ.
この回答への補足あり
    • good
    • 0

たぶんあなたの解釈がおかしいんだろうけど, 「テキスト」とやらにどう書いてあるのか正確な文章がわからないので「テキストがおかしい」という可能性も残る. 例えば


「テキストにはentrySetはキーと値のセットを取得と記載されていてそこからgetKeyでキーをgetValueで値を取り出すとなっていた」
というのは「文字通り」に解釈すると間違っている.

とはいえ「文字通り」に解釈するとあなたの書いた
System.out.println(b.getValue(Integer.valueOf(a)));
のようにはならない (ところでなんで同じ文が 2つあるんだろう) ので,
テキストの文章もおかしいしあなたの解釈もおかしい
のかもしれない.
この回答への補足あり
    • good
    • 0

Mapじゃなくて EntrySet の話なんだ。



EntrySet#getValue() は EntrySetのインスタンスが保持している
1組のキー/値 ペアから「値」だけを取り出すだけだから引数はないですよ。

辞書と「キー/値 ペア」の区別をつけましょう。

>System.out.println(map.get(a));
>だとmapで未定義だと言われます。

唐突に出てくる 変数 a が謎です。
この回答への補足あり
    • good
    • 0

>試したところ今度はgetValueがIntegerに適用できないとなります。


>get元のmapのキーはInteger型なのでgetがIntegerに
>対応してないということでしょうか?

やったことは具体的なコードで示そう。getValue ってなに?

こんな風に書いてます?
var map = new java.util.Hashtable<Integer, String>();
map.put(1, "AAA");
System.out.println(map.get(Integer.valueOf(1)));

System.out.println(map.get(1));
としてもおんなじはず。

>例intのAという変数をIntegerのAという変数に変換する

同じ変数が2つの型を持つことはできません。変換されるのは
値の型です。仮引数が Integer型、実引数が int型なら、代入時
intからIntegerの変換が暗黙で行われます。
この回答への補足あり
    • good
    • 0

明示的にやるなら Integer.valueOf(int型の値)


だけど、普通自動変換(boxing)に任すので int と Integer の違いは
あまり意識しない。
この回答への補足あり
    • good
    • 0

autoboxing

    • good
    • 0

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