- ベストアンサー
JAVA言語 Iterator
■JAVAの課題をしています。 ArrayList lendList =(ArrayList)session.getAttribute("text"); Iterator it=lendList.iterator(); while(it.hasNext()){ Text text=(Text)it.next(); String mondai = text.getMondai(); String seikaiNo= text.getSeikaiNo(); ArrayList tlist = text.getTlist(); String kaisetu = text.getKaisetu(); } のMondai SeikaiNo Tlist Kaisetu の中にはそれぞれ文章が4つ入っています。 Iteratorでまわすと、全部でてしまうのですが、一つだけ取得するにはどうしたらよいでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (3)
- ppiiyyoo
- ベストアンサー率0% (0/1)
- HarukaV49
- ベストアンサー率53% (48/89)
- pcbeginner
- ベストアンサー率46% (261/560)
関連するQ&A
- Iteratorの使い方でこまっています。
こんにちは、片岡と言います。 Iteratorの使い方で困っています。 次のプログラムで自分の望んだ結果と違う動作をします。 原因やもっと良い方法をご存知の方はいませんか。 私の行った手順は以下です。 (1)次のようなプログラムを作りました。 import java.util.ArrayList; import java.util.Iterator; public class Main { ArrayList list; public static void main(String[] args) { Main instance = new Main(); Iterator it = instance.getIterator(); for (int i = 0; i < 3; i++) { Iterator temp = it; //Iterator temp = instance.getIterator(); while (temp.hasNext()) { System.out.print(temp.next()); } System.out.println(""); } } public Main() { list = new ArrayList(); list.add("a"); list.add("b"); list.add("c"); } public Iterator getIterator() { return list.iterator(); } } (2)このプログラムを実行しました。 abc (3)しかし、私の望んだ実行結果は、次のようなものでした。 abc abc abc (4)プログラムを次のように変更しました。 Iterator temp = it; の行を Iterator temp = instance.getIterator(); に変更しました。 変更後は、私の望んだ実行結果になります。 なぜ、Iterator temp = it では駄目なのでしょうか。 また、何度もIteratorを生成すると、処理が重くなる気がします。 もっと良い方法はないのでしょうか。 ご存知の方はいらっしゃいませんか。 なお、私の環境は以下の通りです。 OS: Microsoft Windows XP Professional SP2 開発環境:Eclipse 3.2.2 java: java version "1.4.2_13"
- ベストアンサー
- Java
- setAttribute getAttribute 配列内容受け渡し について
こんいちは。 setAttributeでセットした値をgetAttributeを使用して表示したいのですがうまくいきません。 あとsession.setAttributeとrequest.setAttributeの違いがわかりません。 session はなんとなくわかるのですが、requestがいまひとつわかりません。 どなたか教えていただけないでしょうか? よろしくお願いいたします。 下記がコーディングの内容です。 test.jsp <%@ page contentType="text/html;charset=Shift_JIS" import="java.sql.*, java.util.*" %> <% String[] desc={"aaa","bbb","ccc","ddd","eee"}; session.setAttribute("desc",desc); Vector vect = (Vector)session.getAttribute("dpt"); Iterator itr = vect.iterator(); while(itr.hasNext()) { String[] temp = (String[])itr.next(); out.println(temp[0]); out.println(temp[1]); } %> <html> <body> t_3 test </body> </html>
- ベストアンサー
- Java
- Struts2のiteratorタグの使い方
Struts2でiteratorタグを使用したいのですがJSPでの記述方法がわからず困っています。 アクションクラス、JSPでは以下のように記述しております。 検索するとActionクラス内でArrayListに独自のクラスが格納されている状態での記述方法 はサンプルとしてあったのですがArrayListにStringが格納されていた場合の記述方法に 関しての記載が見つかりませんでした。そのため現在、JSP側ではsession.getattribute()を 使用してしのいでいる次第です。 public ArrayList<String> getDatalist() { return this.datalist; } public void setDatalist(ArrayList<String> datalist) { this.datalist = datalist; } public String execute() { ArrayList<String> datalist = bdf.getDataList(); return "success"; } 以下、JSP側の記述 <s:iterator value="datalist"> ここの記述が不明 </s:iterator>
- ベストアンサー
- Java
- ArrayListのイテレータについて
java初心者です. 以下のようなプログラム(かなり簡略化しています)で ArrayList<Integer> list =new ArrayList<Integer>(); list.add(new Integer(1)); Iterator it = list.iterator(); while(it.hasNext()){ it.next() if(Math.random()<0.5) list.add(new Integer(2));//50%の確率で"2"を追加 }; arraylistの「先頭からイテレータを使って呼び出していくのと同時に,後ろに50%の確率で"2"を追加していきたい」のですが, うまく動作しません.「」の中のような動作を行うには,どうすればいいでしょうか? よろしくお願いします.
- 締切済み
- Java
- IteratorとConcurrentModificationException
IteratorにConcurrentModificationExceptionをthrowさせるやり方がわかりません。 配列に数字を挿入、削除するクラスをつくりました。 MyArrayにあるメソッド、変数 int [] array int mod // 挿入、削除の合計回数 初期値は0 add(int n) // nをarrayに挿入します delete() // 一番うしろの数字を削除します getMod() // modを返します iterator() // new ArrayIterator (array.length, mod) を返します。 modはadd()とdelete()が呼ばれるたびに1ずつ増えていくようにしています。ArrayIteratorはIteratorをimplementsしたクラスです。 <メインメソッドのコード> MyArray a = new MyArray (10); // サイズが10の配列をつくります a.add(1); a.add(2); a.add(3); a.add(4); Iterator it = a.iterator(); it.next(); // 配列の一番最初の数字を返します。 (i.e. 1) a.add(5); // 5を配列に挿入します。 // Iterator以外のメソッドで配列を変えてしまったので、 // ConcurrentModificationExceptionをthrowさせたいんです。 it.next(); // ここでConcurrentModificationExceptionをthrowしてくれません add()、 delete()、 getMod()はそのままにして全く変えずに、これができる方法ありますか?(その三つのメソッド以外は書きかえれます)it.next()だけでなく、it.hasNext()、it.remove()でも同じようにConcurrentModificationExceptionがthrowされるようにしたいのですが・・・。
- 締切済み
- Java
- Iteratorの使用について
いつもお世話になっています。 List使用時の、iterator方法について質問します。 Listに、以下の情報が入っている場合で、 UserFormBean userFormBean = new UserFormBean(); List array = new ArrayList(); array.add("ほのか"); array.add("なぎさ"); array.add("桃子"); array.add("雛菊"); array.add("百合"); array.add("陽介"); //ListにListを格納する List array2 = new ArrayList(); array2.add("酒蔵"); array.add(array2); //別クラスのデータをListに格納する userFormBean.setUserName("あかね"); userFormBean.setAge(15); /** UserFormBeanクラス **/ public class UserFormBean { private String userName; private int age; public String getUserName() { return this.userName; } public void setUserName(String userName) { this.userName = userName; } public int getAge() { return this.age; } public void setAge(int age) { this.age = age; } } このとき、文字列で入っている場合は、普通に取得できるが、 List毎入っている場合と別クラスが入っているうまく取得できません。 普通にfor()を使用すれば取得できるのですが、 このときiteratorを使用して取得することは可能なのでしょうか? また、一般的にこのような取得方法の場合、forとどちらを使用するべきなのでしょうか? 取得方法は以下です。 for(Iterator a = array.iterator(); a.hasNext();) { System.out.println("a="+a); System.out.println("value="+a.next() ); //このとき、a.next()から再度UserFormBeanクラスデータを取得したい } ◆取得結果 a=java.util.AbstractList$Itr@10b30a7 value=ほのか a=java.util.AbstractList$Itr@10b30a7 value=なぎさ a=java.util.AbstractList$Itr@10b30a7 value=桃子 a=java.util.AbstractList$Itr@10b30a7 value=雛菊 a=java.util.AbstractList$Itr@10b30a7 value=百合 a=java.util.AbstractList$Itr@10b30a7 value=陽介 a=java.util.AbstractList$Itr@10b30a7 value=[酒蔵] a=java.util.AbstractList$Itr@10b30a7 value=UserFormBean@1a758cb 宜しくお願いします。
- ベストアンサー
- Java
- ListからMapを作成 MapのValueにはListをput
すみません、どなたか教えて下さい。 あるListからMapを作成したく、同じkeyが存在する場合、valueのListへ値を追加したいですのですがConcurrentModificationExceptionエラーが返されてしまいます。エラーを返さないように変数を使い分け工夫したつもりですが。。。((1)でmapAにもaddされている!?)他に良い方法はないでしょうか? Map mapA = new TreeMap(); Map mapB = new TreeMap(); Iterator it = listA.iterator(); while (it.hasNext()) { Bean bean = (Bean)it.next(); List mapvaluelist = new ArrayList(); if (mapA.size()==0){ mapvaluelist.add(bean); mapA.put(bean.getName(),mapvaluelist); }else{ if (mapB.size()!=0){ mapA = mapB; } Set keyset = mapA.keySet(); Iterator itmap = keyset.iterator(); while (itmap.hasNext()){ String mapkey = (String)itmap.next(); if (bean.getName().equals(mapkey)){ mapvaluelist = (List)mapA.get(mapkey); mapvaluelist.add(bean); mapB.put(bean.getName(),mapvaluelist); (1) }else{ mapvaluelist.clear(); mapvaluelist.add(bean); mapB.put(bean.getName(),mapvaluelist); } } } }
- 締切済み
- Java
- java プログラミング 型変換 データベース
型変換について質問です。下のプログラムは 「Double str2 = (Double)iter3.next();」 の行で java.lang.ClassCastException: [I at kadai6_a.main(kadai6_a.java:152) というエラーがでます。なんでかわからなくて教えてください! ちなみに上のStringへの型変換ではエラーはでないんです。。 (前略) PreparedStatement stmt2 = db.prepareStatement( "INSERT INTO doc(docid, docname,length) VALUES(?, ?, ?);"); docID = 0; Iterator iter2 =docNames.iterator(); List l = java.util.Arrays.asList(str); Iterator iter3 = l.iterator(); while(iter2.hasNext()){ while(iter3.hasNext()){ String docName = (String)iter2.next(); Double str2 = (Double)iter3.next(); stmt2.setInt(1, docID); stmt2.setString(2, docName); stmt2.setDouble(3,str2); stmt2.executeUpdate(); //System.out.println("docID="+docID); docID++; } } stmt2.close(); } catch (Exception e) { e.printStackTrace(); } (後略) ではお願いします!
- ベストアンサー
- Java
- Eclipse3.4でJavaアプリ実行時のlogの格納場所
を教えてください。 例えば package org.fireproject.hibernatesample; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.log4j.Logger; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; public class ManyToOne { private static Logger logger = Logger.getRootLogger(); public static void main(String args[]) { SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); List oneSideList = createAndSaveOneSide(sessionFactory); List manySideList = createAndSaveManySide(sessionFactory, oneSideList); manySideList = loadManySides(sessionFactory); updateOneSide(sessionFactory, oneSideList); for (Iterator itr = manySideList.iterator(); itr.hasNext();) { ManySide manySide = (ManySide) itr.next(); logger.info(manySide);//<----------------------- } deleteAllManySide(sessionFactory); deleteOneSide(sessionFactory, oneSideList); manySideList = loadManySides(sessionFactory); } において logger.info(manySide); で出力されたログはどこにかかれるのでしょうか? また、その出力先の設定方法も教えてください。
- ベストアンサー
- Java
- サーブレットからArrayListにBeanを格納しJSPで使用する方法
はじめまして、以下の問題ですが、わからず困っているので 質問させていただきます。 PCはWindowsXPで Eclipse Version: 3.4.1を使用し Tomcat5.5,jre6を使用しています。 研修の課題なのですが サーブレット内でBeanをArrayListを使って、動的確保したものを JSPに渡し、ArrayListに入ったBeanを取り出し、 そのBeanにsetした値を表示させるというプログラムを作っています。 JSPの部分がまったくわかりません。 JSPに配列はわたったようなのですが、JSPでのArrayListの取り出し方 などが、調べてもまったく解決しません。 もしわかる方がいましたら、教えてください。よろしくお願いします。 内容は以下です。 ///////////サーブレット//////////////////////////// ArrayList<Beans> beansid = new ArrayList<Beans>(); i=0; while(rs.next()){ sid = rs.getInt("sid"); sname = rs.getString("sname"); spass = rs.getString("spass"); Beans inbean = new Beans(); inbean.setsid(sid); inbean.setsname(sname); inbean.setspass(spass); beansid.add(inbean); } request.setAttribute("beansid",beansid); //Beansクラス///////////////////// public class Beans{ private int sid; private String sname; private String spass; public int getsid(){ return sid; } public void setsid(int sid){ this.sid = sid; } public String getsname(){ return sname; } public void setsname(String sname){ this.sname = sname; } public String getspass(){ return spass; } public void setspass(String spass){ this.spass = spass; } } //JSPのコード///////////////////////////////// <%@page contentType="text/html; charset=Shift_JIS" pageEncoding="Shift_JIS" %> <jsp:useBean class="java.util.ArrayList" id="beansid2" scope="request"/> <jsp:useBean class="java.lang.String" id="beansid" scope="request"/> <%@page import="keiji.Beans"%> <%@page import= "java.util.*" %> <%@page import="java.sql.*"%> <%@page import="javax.servlet.*"%> <%--下のclassの所はBeansというのでも試してみました。--%> <jsp:useBean class="java.util.ArrayList" id="beansid2" scope="request"/> <%-- ArrayList beansid = (ArrayList)request.getAttribute("beansid"); --%> <%-- Iterator it = beansid.Iterator(); --%> ArrayList Iteratorと使ってみたのですが、 自分にはわけが分からず、JSPを実行したとき、処理がとまってしまいます。
- 締切済み
- Java
お礼
アドバイスとても助かりました。確かに基本が身についておりません。 今の自分のレベルではすごく無理なことをしていることもわかっておりました。しかし引き下がれない理由がございましたので、ここで何度も質問させていただきました。厳しい意見をおっしゃていましたが、まさにその通りでございます。しかしご回答してくださった方は承知ながらも、ここまでアドバイスしてくださいました。大変感謝しております。親切な方で本当に良かったです。これからも、このサイトで質問させていただくかとは存じますが、見かけた際には、今のクイズプログラムの続きだと思ってくださると幸いでございます。これからも何卒宜しくお願い申しあげます。