• ベストアンサー

JAVAで中身が入っている要素の数を知るにはどうす

int num[20]と宣言して num[0]=3;num[1]=4; としたとき2を返してくれる方法がありましたら教えてください 自分ではfor文で回して初期値かどうかを判定していく方法を 考えていましたが、他に方法がある気がして調べてみても 見つかりませんでした・・・

質問者が選んだベストアンサー

  • ベストアンサー
  • rw-tile
  • ベストアンサー率100% (2/2)
回答No.2

配列から、代入した値のみについてその個数を取得するのは直接的には難しいではないかと思います。 方法として今思いついたのは、 (1)フィールドに配列を保持した自作クラス、例えば、 class MyArray{ private int array[] = new int[20]; private int inputSize = 0; int get(int index){...} void put(int index,int number){...} int getInputSize(){return inputSize;} // その他、必要な機能 } 等を作り、putにおいては置く場所に既に代入されていなければinputSizeを増やし、初期値0を代入すれば inputSizeを減らすといった方法を実装する。 (2)配列を用いず、ハッシュテーブルを用いる、例えば、 Hashtable<Integer,Integer> ht = new Hashtable<Integer,Integer>(); とし、 ht.put(0,3);ht.put(1,4); などとして置き、size()メソッドで個数2を取得する。 (ただし、配列の場合初期値となっていた特定の数値0について別に何かしたいのであれば、その辺を適当に調整) とか。for文で片っぱしから調べるよりは、hashtableのほうが効率はいいのではないかと。 直接の答え(配列の使用)に対する答えでなくて申し訳ありません。 参考程度にでも・・・

その他の回答 (1)

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

int[] num = new int[20]; で確保されたint型配列の各要素は,中身が入っていないわけではなく,自動的にゼロで初期化されているのですが,それは問題ないのでしょうか。

関連するQ&A

専門家に質問してみよう