• ベストアンサー

ArrayListの使い方がわかりません。(超初心者です。)

情報管理用のクラス[Hito]を作成する。 プロパティ  String name double taijyu double sincho double nenrei ・メインクラスでHitoをArrayListに5つ格納し、それぞれの値を表示させるという課題に挑んでいます。 2週間前からjavaを勉強し始めたばかりで、ようやくオブジェクト指向や、クラスというものどんなものか多少イメージがわいてきた程度です。ArrayListについては配列と違い、格納するデータ数の数をはじめから決めなくてもいいというぐらいしかわかっていません。(これでさえ違うかも?)  どのように組みはじめばいいか、そしてArrayListはどのように使えばいいのか教えていただけますか? よろしくお願いします。

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

  • ベストアンサー
  • tachiwa
  • ベストアンサー率34% (25/73)
回答No.3

ほかの方の説明で理解を深めたら、以下のコーディングを打ち込んでコンパイルします。 C:\java\OKWeb>javac TestHito.java 成功したら、 C:\java\OKWeb>java TestHito で実行してみてください。 C:\java\OKWeb>java TestHito 名前 あきら 体重 74.3 身長 184.3 年齢 35 名前 まみ 体重 44.5 身長 168.4 年齢 28 と表示されます。 先ず動く事で感動を得る事が大切だと思います。 import java.util.*; class Hito { private String name; private double taijyu; private double sincho; private int nenrei; public Hito(){ name=""; taijyu=0; sincho=0; nenrei=0; } public void setName(String name){ this.name = name; } public void setTaijyu(double taijyu){ this.taijyu = taijyu; } public void setSincho(double sincho){ this.sincho = sincho; } public void setNenrei(int nenrei){ this.nenrei = nenrei; } public String getName(){ return name; } public double getTaijyu(){ return taijyu; } public double getSincho(){ return sincho; } public int getNenrei(){ return nenrei; } } public class TestHito{ public static void main(String []args){ Hito[] hito =new Hito[5]; for(int i = 0; i < 5; i++){ hito[i] = new Hito(); } hito[0].setName("あきら"); hito[1].setName("まみ"); hito[0].setTaijyu(74.3); hito[1].setTaijyu(44.5); hito[0].setSincho(184.3); hito[1].setSincho(168.4); hito[0].setNenrei(35); hito[1].setNenrei(28); ArrayList result = new ArrayList(); result.add(hito[0]); result.add(hito[1]); for(int i = 0; i<result.size(); i++){ hito[i]=(Hito)result.get(i); System.out.println("名前 "+hito[i].getName()+ " 体重 "+hito[i].getTaijyu()+ " 身長 "+hito[i].getSincho()+ " 年齢 "+hito[i].getNenrei()); } } }

1minarai
質問者

お礼

具体的に明示していただき大変参考になりました。また機会がありましたらよろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • argi
  • ベストアンサー率27% (5/18)
回答No.2

#1さんの補足ですが、ArrayList::getメソッドは、Object型(全てのClassの親クラス)を返却してくるので、利用したい型にCastしてやる必要があります。 また、add時は、全てのオブジェクト型をパラメータとすることが出来ます。(ここではCastは不要) ArrayList list = new ArrayList(); Integer aaa = new Integer(); String bbb = new String(); Boolean ccc = new Boolean(); list.add(aaa); list.add(bbb); list.add(ccc); Integer aaa2 = (Integer)list.get(0); String bbb2 = (String)list.get(1); Boolean ccc2 = (Boolean)list.get(2); といった具合で。 Castの型が違っているとClassCastExceptionが発生するので注意してください。

1minarai
質問者

お礼

補足説明をいただきありがとうございました。 機会がありましたら、またよろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.1

まず、標準のクラスでわからないことがあった場合には、必ずドキュメントを見てください。 それは習慣にしてください。 ドキュメントが読めなければ、上達はないと思った方がいいです。 これは、JAVAに限ったことではありません。開発をするには必須のことです。 誰かが必ず教えてくれる保証もないのですから、その方が自分自身のためです。 早く解決できますしね。 知りたいクラスのページを開くと、最初にそのクラスに関しての説明があります。 ここは必ず読みます。 次に、メソッドの簡単な説明を読みます。使えそうなものがあったら、それをクリックすれば そのメソッドの詳しい説明にジャンプします。 難しくはありませんので、必ず読むようにしてください。 j2sdk1.4ドキュメント http://java.sun.com/j2se/1.4/ja/docs/ja/index.html クラスの説明はここから http://java.sun.com/j2se/1.4/ja/docs/ja/api/overview-summary.html 全部ダウンロードするにはここから http://java.sun.com/j2se/1.4.2/ja/download.html 今回はとりあえず、ArrayListの簡単な説明をしておきます。 ArrayListはObject型を格納できます。 配列と違い、上限は基本的にはありません。 追加をすることで、上限が勝手に増えていきます。 よく使うのは、次の機能(メソッド)です。 ・追加(add) ・取り出し(get) ・置き換え(set) ・削除(remove) ・サイズの取得(size) コード例 ArrayList list = new ArrayList(); //ArrayListに追加する list.add( "apple" ); list.add( "orange" ); list.add( "lemon" ); //要素数(いくつ追加したのか)を取得 int n = list.size(); for(int i = 0 ; i < n ; i++){  //要素を1つ取り出す  Object item = list.get(i);  //取り出した要素を表示  System.out.println(item); } ここでは、文字列を追加しましたが、Object型であれば何でもOKです。 "apple"などの文字列は、String型であり、String型はObject型です。

1minarai
質問者

お礼

貴重なご意見ありがとうございます。 教えていただいたサイトを参考にして以後がんばっていこうと思います。また機会がありましたら、よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ArrayListの質問。

    ロジックの質問なのですが、、 ValueObjectクラス  private boolean flg = false;  private String strYMD; それぞれgetter/setter あらかじめ、aValの方にsetterで、20040626とセットします。 このオブジェクトをArrayListへaddしていきます。 ここで、String[] strYMDArray ={"20040623","20040626","20040622"}; という配列があります。 このとき、ArrayListの中身の要素数でループさせて、 配列strYMDArrayの日付と、ArrayList内のValueObjectの日付を比較し、同じであれば、 ValueObjectのflgをセットし、再度、ArrayListへつめなおしてやらなければなりません。 しかし、うまい方法を思い浮かべることができません。 どうか、うまい方法をおしえてくださいませんでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Java
  • ArrayList

    課題プログラムの中で、いくつかArrayListを使ったメソッドを作って動かすものが出題されているのですが、そのうち「ArrayListの文字を反転させて出力する」というのがわかりません。 何を使ったらよいでしょうか? ちなみに、私の書いたプログラムの中では、 ArrayList<String> list = new ArrayList<String>(); としていますので、それで書いて下さると嬉しいです。 また、課題の中で、listの中に入っているのは、String型のアルファベット10個です。 教えて下さい、よろしくお願いします。 ▼参考API http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/ArrayList.html

    • ベストアンサー
    • Java
  • ArrayListに配列を入れることは出来ますか?

    最近javaの勉強を始めました。 それで質問なのですが、ArrayListにString型の配列を入れれないでしょうか? また、Genericsはどうなるのでしょうか(取り出すときにキャストする方法でも)? よろしくお願いします。

    • ベストアンサー
    • Java
  • ArrayListの中身?

    import java.io.Serializable; public class Master implements Serializable{  private String CODE = null; //番号  private String NAME = null; //名前  public String getCODE() {  return CODE;  }  public void setCODE(String code) {  CODE = code;  }  public String getNAME() {  return NAME;  }  public void setNAME(String name) {  NAME = name;  } } というクラス?があって、 別の場所で List ls = new ArrayList(); Master mst = new Master(); mst.setCODE("00001"); mst.setNAME("テストさん"); ls.add(mst); というふうに、リストにクラスごと追加したとします。 こんなとき、逆に、lsの中身を表示するにはどうしたらいいのでしょう?? ls----Master[0] ----CODE         -----NAME  ----Master[1] ----CODE         -----NAME ・ ・  ----Master[n] ----CODE         -----NAME という風に、格納されているイメージなんですが・・。 どうして、クラスごと、リストに追加したの?っていうのは聞かないでください。 わかる方、教えてください!

    • ベストアンサー
    • Java
  • ArrayListに多次元配列

    ArrayListに多次元配列の変数を格納したのですが、取り出し方がわからず困っています。 ----------------------------------------------- String[][] str = {{"aaa","bbb","ccc","ddd","eee","fff"}, {"aaa","bbb","ccc","ddd","eee","fff"}, }}; ArrayList array = new ArrayList(); array.add(str[0]); array.add(str[1]); ----------------------------------------------- 上記の場合で、str[0][2];を取得する方法がわかりません。 java初心者なのでおかしな質問かもしれませんが、宜しくお願いします。

    • ベストアンサー
    • Java
  • ArrayListの要素数の上限

    java で ArrayListの要素数の上限はいくつでしょうか? ネットで検索したところ C# の ArrayList は 2^32 - 1 のようですけど・・・。 たて、よこ 2^64 の巨大な実数値行列があって、これの固有値を求めるプログラムを作ることになっています。 最初は double の2次元配列で行列を作ろうと思ったのですが、double配列の要素数は 2^32-1 個が限界であきらめました。別の方法を探しているところなのです。 パソコンのメモリは24GBにしてOSも64bit Windowsにしたので java が対応できれば大丈夫かと思うのですが・・・ よろしくお願いします。

    • ベストアンサー
    • Java
  • ArrayListについて教えてください

    ArrayListについて教えてください Java初心者です。 現在あるJavaの問題を解いていて、つまづいてしまいました。 わかる方、ご教示お願いします。 以下問題 ****************************************************************** 以下2メソッドを持つShikenKekkaクラスを作成せよ ・学籍No,科目,点数を登録する void Toroku(String 学籍No , Kamoku 科目 , int 点数); ・引数で指定した学籍No,科目の点数を返す int getTensu(String 学籍No,Kamoku 科目); 科目は以下の定義 enum Kamoku{KOKUGO,SANSU,RIKA} 使用例として、 ShikenKekka sk = new ShikenKekka(); sk.Toroku("0A01",Kamoku.KOKUGO,70); sk.Toroku("0A01",Kamoku.SANSU ,60); sk.Toroku("0A01",Kamoku.RIKA ,50); sk.Toroku("0B02",Kamoku.KOKUGO,75); sk.Toroku("0B02",Kamoku.SANSU ,65); sk.Toroku("0B02",Kamoku.RIKA ,55); int point = sk.getTensu("0B02",Kamoku.RIKA); ****************************************************************** ArrayListを使って値を格納しようとしているのですが、 ArrayListの使い方がうまくできません。 学籍No,科目,点数の3つの値をどうすれば格納して保持できるのか、 教えていただけると助かります わかりずらい説明で申し訳ありません。

  • VC#2010 ArrayListに入れた要素の型

    こんにちは。ArrayListに異なる型のクラスを入れて、後からそれがどの型か判断してから処理しようとしているのですが、エラーになってしまいます。 //ベースオブジェクトクラス class BaseObj { string path; BaseObj(string p){path = p:} } //製品Aクラス BaseObjを継承 class ProductA : BaseObj { ProductA(string p) : base(p) {} } //製品Bクラス BaseObjを継承 class ProductB : BaseObj { ProductB(string p) : base(p) {} } ------------------------------------------- ArrayList ObjList;//オブジェクトを格納する ProductA A = new ProductA(@"C:\"); ProductB B = new ProductB(@"D:\"); ObjList.Add(A); ObjList.Add(B); ------------------------------------------- //ここでは、0番目にAが入ってると分かっているのでAかBか調べる処理は省いてます。 MessageBox.Show'((ProductA)ObjList[0]).path); 上記メッセージボックスのところで、 型 'System.Collections.Generic.List`1[Application.ProductA]' のオブジェクトを型 'Application.ProductA' にキャストできません。 というエラーになってしまいます。これはどうしてなのでしょうか?

  • ArrayListを利用する問題

    問題 1.ArrayListのオブジェクトを生成する。 2.「何回入力しますか?」と出力し、標準入力をおこなう。 3.2で入力した回数分、以下の処理を繰り返す。 「n個目の値を入力してください」と出力し、標準入力を行う。(n=ループ回数) 入力された値をArrayListへ格納する。 4.ArrayListのサイズ分、以下の処理を繰り返す。 ArrayListより値を取得する。 取得した値を出力する。 結果 何回入力しますか? 3 1個目の値を入力してください。 hoge 2個目の値を入力してください。 poyo 3個目の値を入力してください。 hoo hoge poyo hoo 自分で書いたプログラム 1 import java.util.ArrayList; 2 import java.io.*; 3 4 class ArrayList2{ 5 public static void main(String[] args) throws IOException{ 6 7 ArrayList list = new ArrayList(); 8 list.add(n); 9 10 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 11 12 System.out.println("何回入力しますか?"); 13 14 String str = br.readLine(); 15 16 int num = Integer.parseInt(str); 17 18 for(int i = n ; i < num; i++){ 19 System.out.println("n個目の値を入力してください。"); 20 21 String str1 = br.readLine(); 22 23 } 24 } 25 } どうもうまくいきませんので教えて下さい。

  • JSPでのArrayListの表示について困っています

    以下のようにしてスレッドNoが同じものだけ表示したいと考えております。 servletの「text」という変数にはすべての値が格納されているところまでは確認できました。 それをJSPにて表示したいのですが、どのようにすれば出力されるのかわかりません。 どなたかお教えいただければと思います。 宜しく御願い致します。 --------------------------------------------------------- java /** * *TEXTテーブルからスレッドNoが同じものを返すメソッド * * */ public ArrayList selecttext(int no)throws SQLException{ ArrayList<Textbeen> list = new ArrayList<Textbeen>(); TextDAO kei =new TextDAO(); Connection db=kei.createConnection(); Statement sttSql=db.createStatement(); ResultSet rs=sttSql.executeQuery("SELECT * FROM TEXT WHERE KB_TH_NO='"+no+"' "); while(rs.next()){ String name=rs.getString("KB_NAME"); String tino =rs.getString("KB_TITLE_NO"); String title = rs.getString("KB_TITLE"); String mail = rs.getString("KB_MAIL"); String text = rs.getString("KB_TEXT"); String pass = rs.getString("KB_TITLE_PASS"); String date = rs.getString("KB_TIME"); int th_no = rs.getInt("KB_TH_NO"); Textbeen thread = new Textbeen(name, title, tino, mail, text, pass, date, th_no); //TO(Threadオブジェクト)を、保持するリストに追加 list.add(thread); } kei.closeConnection(db); return list; } ---------------------------------------------------------- servlet ArrayList text = new ArrayList(); try{ text = list.selecttext(TH_no); } catch(Exception e){ e.getStackTrace(); } request.setAttribute("test", text); String nextPage = "/view/user/ThreadTop.jsp"; ----------------------------------------------------------

このQ&Aのポイント
  • 他者のメールアドレスが表示され、個人情報の漏洩のリスクが生じています。
  • オートコンプリートの機能が原因で、他人の情報が勝手に保存されることがあります。
  • Googleクロームの設定やクッキーの管理を見直すことで解決する可能性があります。
回答を見る