JavaでList<DataClass>からデータを抽出する方法

このQ&Aのポイント
  • Javaでプログラミングを始めたばかりの人向けに、List<DataClass>からデータを抽出する方法を解説します。
  • GPSDaoクラスのselectAllメソッドを使用して、DBのGPSテーブルからデータを取得し、List<GPSData>に代入します。
  • ただし、list変数の中のデータをsetterとgetterで取り出すには、適切な方法を使う必要があります。
回答を見る
  • ベストアンサー

List<DataClass>からデータ抽出

javaでプログラミングを始めたのですが、人のプログラムを読んでいてわからない所があります。 まずデータクラスとして「GPSData」があり、これは2つの値のsetterとgetterを持っています。 public class GpsData { private float lat; private float lon; public float getLat() {return lat;} public void setLat(float lat) {this.id = lat;} public float getLon() {return lon;} public void setLon(float lon) {this.id = lon;} } GPSDaoというクラスがselectAllというメソッドを持っており、これはDBのGPSテーブルの値を取得し、List<GPSData>を返します。 以下のようにまずはlistをnewして、その中にselectAll()で取得したList<GPSData>を代入する所までは記述できたのですが、このあとどうしたらlistの中のデータをsetterとgetterで取り出せますか? GpsDao gdao = new GpsDao(); List<GpsData> list = gdao.selectAll(); 「list.」と書いても、「デフォルト・プロポーザルがありません」となってしまいます。

  • Java
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.2

for (GpsData data : list) { float lat = data.getLat(); float lon = data.getLon(); }

rinet8223
質問者

お礼

ありがとうございます。 このソースのおかげで判りました。 その後、listについても勉強しちゃんと理解できました。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

getter とか setter とかいう前に, List<GpsData> から「特定の GpsData クラスのインスタンス」を取り出さないと....

rinet8223
質問者

補足

解答ありがとうございます。 すみません、その方法がわからないのです・・・。

関連するQ&A

  • サブクラスでセッターを呼び出す

    java初心者です。 以下のようなソースコードで、コンパイルしたらエラーが出ました。 サブクラスのsetterのところでエラーが出たんですが、 サブクラスでスーパークラスのメソッドは呼び出せないんでしょうか? それとも他に間違いがあるんでしょうか? class rensyu { private int x; rensyu(){ x=this.x; } int getX(){ return x; } void setX(int m){ this.x = m; } } class rensyu2 extends rensyu{ private rensyu[] A; rensyu2(){ A = new rensyu[100]; } int getter(int i){ return A[i].getX(); } void setter(int x,int i){ A[i].setX(x); } } class rensyuTester{ public static void main(String[] args) { rensyu2 A = new rensyu2(); A.setter(1,0); A.setter(2,1); System.out.println(A.getter(0) +" "+ A.getter(1)); } }

    • ベストアンサー
    • Java
  • Javaで単方向リスト作成に行き詰まり

    Javaで単方向リストを作成しようとしているのですが、append()で1件目のvalueやnextの値をアクセスするにはどうしたらいいか分かりません。ちなみにmain関数は変更しなくていいようです。 class Chain{ public static void main(String args[]){ //1件目のノードの作成 if(args.length == 0){ System.out.println("パラメータを指定してください"); return; } Node start = new Node(Integer.parseInt(args[0])); //2件目のノード作成 for(int i = 1; i < args.length; i++){ start.append(Integer.parseInt(args[i])); } } } class Node{ //メンバ変数(インスタンス変数) private int value; private Node next; //コンストラクタ public Node(int value, Node next){ this.value = value; this.next = next; } public Node(int value){ this.value = value; } public Node(){ this.value = 0; this.next = null; } //アクセスメソッド(setter, getter) public int getValue(){ return value; } public void setValue(int value){ this.value = value; } public Node getNext(){ return next; } public void setNext(Node n){ this.next = n; } //通常のメソッド //追加する public void append(int v){ Node chain = new Node(); chain.value=chain.getValue(); System.out.println(chain.value); } }

    • ベストアンサー
    • Java
  • アノテーションを利用したアクセサメソッドの自動定義というのは実現可能?

    近年、デフォルトコンストラクタと各フィールドに対するアクセサメソッド(setter/getter)を備えたJavaBeansが話題になっていると思います。例えばこんなクラス。 class TestBeans {  private int number;  public void setNumber(int number) {   this.number = number;  }  public int getNumber() {   return number;  } } しかし、フィールドの数が増えてくると、コードがどんどん冗長になってくると思います。 そこで、ふと思ったのですが、リフレクションとJDK5のアノテーションを使って、下記のようにスッキリとアクセサメソッドが利用できるようになったりしないかなぁ、と。 class TestBeans {  @Getter @Setter  private int number; } こうすることによって、getNumber / setNumber が利用できるようになったりしないかな、ということです。 アノテーションの自作やリフレクションに関する知識が乏しいので、私にはよくわかりませんでした。 こういったことは実現可能なのでしょうか? また可能ならばどのように実装するのでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Java
  • Listデータを重復せずにSetに格納したい

    お世話になっています。 以下のクラスがあるとき public class UserFormBean_2 { private int userNum; private String userId; private String password; public void setUserNum(int userNum) { this.userNum = userNum; } public int getUserNum() { return this.userNum; } public void setUserId(String userId) { this.userId = userId; } public String getUserId() { return this.userId; } public void setPassowd(String password) { this.password = password; } public String getPassword() { return this.password; } public String toString() { return this.userId; } } Listにこのクラスが格納されている場合、 userIdをキーに、userIdを重複せずに格納することは可能なのでしょうか? 実行ソースは以下です。 public class Run{ public static void main(String[] args){ Set ss = new HashSet(); List array2 = new ArrayList(); (データ1) UserFormBean_2 userFr = new UserFormBean_2(); userFr.setUserId("maki"); userFr.setPassowd("なつのおとしご"); array2.add(userFr); //仮に、先にSetに値を格納する ss.add(userFr); (データ2) userFr = new UserFormBean_2(); userFr.setUserId("sayaka"); userFr.setPassowd("motomiti"); array2.add(userFr); (データ3) userFr = new UserFormBean_2(); userFr.setUserId("neneko"); userFr.setPassowd("ゆずは!"); array2.add(userFr); (データ4) userFr = new UserFormBean_2(); userFr.setUserId("森の山手"); userFr.setPassowd("なつのおとしご"); array2.add(userFr); //仮にSetに値を格納する ss.add(userFr); (データ5) userFr = new UserFormBean_2(); userFr.setUserId("maki"); userFr.setPassowd("なつのおとしご"); array2.add(userFr); System.out.println("size:"+array2.size()); System.out.println("set_size:"+ss.size()); UserFormBean_2 uB = new UserFormBean_2(); UserFormBean_2 uf = new UserFormBean_2(); System.out.println(" -- set -- "); } } よろしくお願いします。 for( Iterator u=array2.iterator();u.hasNext(); ) { uB = (UserFormBean_2)u.next(); System.out.println(uB.getUserId()); for(Iterator s=ss.iterator();s.hasNext(); ) { uf = (UserFormBean_2)s.next(); System.out.println(uf.getUserId()); ss.add(uB); }

    • ベストアンサー
    • Java
  • StrutsでJSPからListを受け取りたい

    JSPに複数のhidden(動的に数が変化)があり、これらの値をformのlist(配列)に詰めたいです。 尚、nameの値は別の処理でjavascriptを使いvalueを変化させるため連番であれば構わないです。です。 ~~~JSP~~~ <input type="hidden" name="str1" value="a"/> <input type="hidden" name="str2" value="b"/> <input type="hidden" name="str3" value="c"/> ~~~~~~~~ 上のJSPから下記のFORMに詰めたい ~~~form~~~ private List strList; public List getStrList(){ return strList; } ~~~~~~~~ 又、こちらで調べたところ下記のようにすればいけるようですが欲しい値は一つのためBeanを使用しなくても実現可能ではないかと思い、質問させていただきました。 よろしくお願い致します。 ~~~JSP~~~ <input type="hidden" name="testArray[0].str" value="a"/> <input type="hidden" name="testArray[1].str" value="b"/> <input type="hidden" name="testArray[2].str" value="c"/> ~~~~~~~ ~~~FORM~~~ private List list; public TestBean getTestA(int iIndex) { while (this.list.size() <= iIndex) { this.list.add(new TestBean ()); } return ( TestBean ) this.list.get(iIndex); } public Object[] getTestArray() { return list.toArray(); } public static class TestBean { private String str = ""; public String getStr() { return str; } public void setStr(String str) { this.str = str; } }

    • ベストアンサー
    • Java
  • ゲッタ、セッタの意味

    getterとsetterがあり、privateなインスタンス変数を持つクラスと、publicなインスタンス変数を持つクラスってどう違うんですか?

    • ベストアンサー
    • Java
  • getterとsetterについて

    プログラム初心者です。 いきなりC#から勉強するのは難度が高いかもしれませんが、 克服しないといけません。 分からないことがあります。 教えていただけますでしょうか。 例えばC#のプログラミングで使用する getterとsetterについて初心者でも分かりやすく教えていただけないでしょうか。 "C#では変数に「プロパティ」を作ることができます…"とか "フィールド(クラスのインスタンス変数)というのは、クラスの内部で持っている値です。 この内部の値に直接外部からアクセスさせてはいけません。 カプセル化では、フィールドへの読み書きは、必ずそのクラスのコードを経由して行います。 つまり、間接的に読み書きします。"とか書かれているものがありました。 この値はいかなるどういう値で、それを取得したい場合に使うのか 分かりません。正確にイメージできません。 あと以下の例文があったのですが、 valueというのはもともとどういう値が入っていて代入しているのですか? 宜しくお願いします。 public class Person { private string name; public string Name; { get { return this.name; } set { this.name = value; } } }

  • getter、setterメソッドを活用したいです

    Javaのgetter、setterメソッドをうまく使って、下記のコードを実行しようとしたのですが。 ---------------- package javatest; public class Jidosha { private int num; private double gas; public void setNum(int num) { this.num = num; } public void setGas(double gas) { this.gas = gas; } public int getNum() { return num; } public double getGas() { return gas; } public static void main(String args[]) { System.out.println("この車のナンバーは" + num + "です。"); System.out.println("この車のガソリンが入る最大量は " + gas + "です。"); } } ---------------- Eclipse上では「System.out.println・・・」のところで「非 static フィールド gas を static 参照できません」といったエラーが出てきまして。 getter、setterメソッドをうまく活用して「この車のナンバーは××××です」「この車のガソリンが入る最大量は〇〇〇〇です。」という文を出力するには、どう書けばよいでしょうか。 よろしくお願い致します。 ※OKWAVEより補足:「Webシステム開発」についての質問です。

    • ベストアンサー
    • Java
  • 単方向リストの昇順ソートについて

    単方向リストに値を入れるところまでは何とか切り抜けることができましたが、次はソートにてこずっています。this.value と this.next.valueの値を比べて入れ替えるというところまでは何とか想像つきますが、どうやってソートが完了するまでまわしてあげればいいかが分かりません。 class Chain3{ public static void main(String args[]){ Node start = new Node(Integer.parseInt(args[0])); for(int i = 1; i < args.length; i++){ start.append(Integer.parseInt(args[i])); } start.sort(); } } class Node{ private int value; private Node next; public Node(int value, Node next){ this.value = value; this.next = next; } public Node(int value){ this.value = value; } public Node(){ this.value = 0; this.next = null; } public int getValue(){ return value; } public void setValue(int value){ this.value = value; } public Node getNext(){ return next; } public void setNext(Node n){ this.next = n; } public void append(int v){ if(this.next == null) this.next = new Node(v); else this.next.append(v); } //昇順にソートする public void sort(){ int tmp; /*ここで私はバブルソートで行おうと思っているのだが、どう回数制限していいか分からない*/ if(this.value > this.next.value){ tmp = this.value; this.value = this.next.value; this.next.value = tmp; } this.next.sort(); } }

    • ベストアンサー
    • Java
  • StrutsのiterateタグでListに格納されているBeanの要素を表示する方法

    タイトルのように Strutsのiterateタグを使用して、 ArrayListに格納されているBeanの要素を表示しようとしています。 具体的には public class Test { // 実際にはmainではないですが。 public static void main( String[] args ) { TestBean tbean = new TestBean( "あいうえお", "10" ); ListBean lbean = new ListBean(); lbean.setList( tbean ); } } public class TestBean { private String name; private String age; public TestBean( String name, String age ) { this.name = name; this.age = age; } } public class ListBean { private ArrayList list; public ListBean(){ } public void setList( TestBean bean ) { this.list.add( bean ); } public ArrayList getList() { return this.list; } } というような構成で、JSPでiterateタグを利用して、 listに入っているBeanから、更にnameとageを取得して 表示させたいのです。 ご回答お願いします。

専門家に質問してみよう