• ベストアンサー

Itaratorから値を取得するには?

ArrayList<String> list = new ArrayList<String>(); list.add("その1"); list.add("その2"); list.add("その3"); list.add("その4"); Itarator itar = list.itarator(); while(itar.hasNext()){ System.out.println(itar.toString); itar.Next(); } 上記のように記述するとコンソールには その1 その2 その3 その4 というように出力されることを期待したのですが 結果はitar自身の値が返ってきてしまいました。 Itaratorを使用して、ArrayListの値を出力させるには どうすればよいのでしょうか?

  • Java
  • 回答数3
  • ありがとう数0

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

  • ベストアンサー
回答No.1

//記述にスペルミスが多いです //【誤】Itarator //【正】Iterator class Q4005042A{ public static void main(String[] args){ java.util.ArrayList<String> list = new java.util.ArrayList<String>(); list.add("その1"); list.add("その2"); list.add("その3"); list.add("その4"); //Iterator側でも型を指定 java.util.Iterator<String> itar = list.iterator(); while(itar.hasNext()){ String str = itar.next(); //値を取得。nextメソッドは小文字です System.out.println(str); } } }

その他の回答 (2)

回答No.3

/** ○ toString()の正しい使い方 ○ 正規表現が苦手なので、いつものようにアルゴリズムで頑張ってみる。 iterator()はどっか行っちゃったけど、逆に型変換の勉強にはなるかな~と。 */ import java.util.*; public class ToString{  public static void main(String... _$){   ArrayList<String> list = new ArrayList<String>();   list.add("その1");   list.add("その2");   list.add("その3");   list.add("その4");   System.out.println("list.toString() → " + list.toString() + "\n");   // とりあえずは、[その1, その2, その3, その4]を、ゲット。   String toString = list.toString();   ToStringLabel : for(int i=1;i<toString.length()-1;i++){ // 最初と最後の中括弧はいらない。    char toStringChar = toString.charAt(i);    // 値からオブジェクト生成後にその文字列を取得。(敢えて、文字列連結演算子を使わず。)    String toStringCharacter = Character.valueOf(toStringChar).toString();    if(toStringCharacter.equals(",")){     System.out.println();     i = i + 1; // ","のすぐ後ろに、半角スペースがあるため。     continue ToStringLabel; // ループが1つの時は、ラベルは無くても同じ。    }    System.out.print(toStringChar);   }    System.out.print("\n");  } }

  • BleuLune
  • ベストアンサー率57% (15/26)
回答No.2

No1さんがすでにお答えされているので、 質問の趣旨と違いますが、別解を書いてみます。(5.0以降) public class hoge{ public static void main(String args[]){ ArrayList<String> list = new ArrayList<String>(); list.add("その1"); list.add("その2"); list.add("その3"); list.add("その4"); for(String str : list){ System.out.println(str); } } } あと、補足になりますが、 toStringメソッドはオブジェクトの値を返すだけです。つまりtoStringメソッドで自分が望む値を出力させるにはオーバーライドが必要になります。

関連するQ&A

  • ArrayList で配列を扱う場合の記述方法について

    ArrayList で配列を扱う場合の記述方法について、 探しきれないのでご教授お願いします。 ArrayList list = new ArrayList(); list.add("AAA"); list.add("BBB"); list.add("CCC"); for (int i = 0; i < list.size(); i++) { System.out.println(i+"は"+list.get(i)); } という箇所をArrayList<Date>listを使って書き直すのはどのようになるでしょうか。 ArrayList<Date>list= new ArrayList<Date>(); list.add("AAA"); list.add("BBB"); list.add("CCC"); for (int i = 0; i < list.size(); i++) { System.out.println(i+"は"+list.get(i)); } とすると、 型 ArrayList<Date> のメソッド add(Date) は引数 (String) に適用できません。 というエラーになってしまいました。

    • ベストアンサー
    • Java
  • JAVAでの、clone() 参照渡し?について

    ArrayListで文字列の配列(String[ ])の配列を作りました。 そして、listにaddするときに *・・・ list.add(item)だと上手くいきません。      繰り返して異なる値のはずなのですが、      例えば、listget(0)[0] , list.get(1)[0] , list.get(2)[0]が全て同じ値になってしまいます。     しかし、     list.add(item.clone())だと上手くいきます、よくわかりませんが参照渡しというのでしょうか? 前者で何故上手くいかないのかがわからないのです。 この二つの違いは何なのでしょうか。 【プログラム】 ArrayList<String[]> list = new ArrayList<String[]>(); String[] item = new String[6]; //このwhileは数回繰り返されますが、下記の値は毎度異なります。 while(rs.next()) { item[0] = rs.getString("Field"); item[1] = rs.getString("Type"); item[2] = rs.getString("Null"); item[3] = rs.getString("Key"); item[4] = rs.getString("Default"); item[5] = rs.getString("Extra"); list.add(item); ・・・・・・・・・・・・・・・・・・・・*       }

    • ベストアンサー
    • Java
  • 九九の表の応用

    Java勉強中の超初心者です。 ちょっと前に同じ質問をしたのですが、前回の回答をよく見たら 趣旨とは違った処理をしていたのでもう一度、質問をさせて下さい。 ArrayListを使った九九の表を作成します。 この時に、九九の計算結果を一旦、Stringの配列に格納してから、 ArrayListから値を出力します。 この時にArrayListに格納してから出力するソースは書くことが できたのですが、一旦、格段はString[]s = new String[9];として Stringの配列に格納してから、ArrayListにまとめて出力する方法 をご教授お願いできますか? ----------------------------------------------------------- ArrayList list = new ArrayList(); //ここにString[]s = new String[9];が入ります。 for(int i = 1; i <= 9; i++ ){ for(int j = 1; j <= 9; j++){ list.add(i*j); System.out.print(list.get(list.size() - 1) + " "); if((list.size() - 1) % 9 == 8 && (list.size() - 1) != 0){ System.out.println(""); } } } ---------------------------------------------------------- 上記のソースを元に作成できたらと、思います。

    • ベストアンサー
    • 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"を追加していきたい」のですが, うまく動作しません.「」の中のような動作を行うには,どうすればいいでしょうか? よろしくお願いします.

  • ArrayList の変数をaddしてもアドレスが変化しない

    windowsXP Eclipse3.4で import java.util.ArrayList; ArrayList list = new ArrayList(); Bean bean = new Bean(); list.add(bean); list.add(bean); System.out.println(bean); System.out.println(list); とアドレスを出力してみると beanのアドレスとlist内の二つのアドレスと3つのアドレスが すべて同じになってしまいます。 なにが原因か分からないのですが、分かる方がいましたら教えてください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • ArrayList内HashMapの取得

    基本的で申し訳ないのですが一番下の行で リストの3つめの要素内のkey=key2でyeahをコンソールに出力したいです。 どのように取得すればいいのでしょうか? list.get(2).get("key2")っぽいかんじで... ArrayList list = new ArrayList(); for (int i = 0; i < 5; i++) { HashMap map = new HashMap(); map.put("key1", "hello"); map.put("key2", "yeah"); map.put("key3", "boo"); list.add(map); } System.out.println(list.get(2));

    • ベストアンサー
    • Java
  • Java。以下のソースをご覧下さい。

    配列ですが、現在の一覧表示を上位10件で表示したいのですが、教わって書いたソースのため、どう手をくわえればいいか分かりません・・・ ご教示お願いします。 //以下ソースです。ほぼ表示ロジックのみですが、足りなければ別途追記致します。 <前略> Iterator<String> ir = hsFlow.keySet().iterator(); while(ir.hasNext()){ ArrayList<Map.Entry<String,Integer>> list = new ArrayList<Map.Entry<String,Integer>>(); list.addAll((new HashMap<String,Integer>(hsFlow)).entrySet()); Collections.sort(list,Collections.reverseOrder(new SampleSorter())); for(Map.Entry<String,Integer> m:list){ System.out.println(m.getKey()); System.out.println(m.getValue()); String f = ir.next(); Integer c = hsFlow.get(f); if(c==null) c = new Integer(0); System.out.println("回数"+f+":"+c.intValue()+"回"); //この回数表示の部分で回数の多い上位10件のみの表示にしたいと思っています。

    • ベストアンサー
    • Java
  • 複数行キーボード入力した後に再度入力する?

    複数行まとめてキーボードから入力を得た後に、再度入力を得たいのですが方法がわからず困っています。 whileループで複数行入力しCTRL_Dで入力終了、その後再度キーボード入力を得るようにコードを書きましたが、うまくいきません。 1、スキャナーを使用 public static void main(String[] args) {  Scanner sc = new Scanner(System.in);  List<String> list = new ArrayList<String>();  System.out.println("Enter several lines:");  while (sc.hasNextLine()) {   list.add(sc.nextLine());  }  System.out.println("\nEnter another line:");  String str = sc.nextLine();  // 上の位置で例外(NoSuchElementException)発生  System.out.println("Done!"); } 2、BufferedReaderを使用 // 例外は発生しないが、二回目の入力が不可 public static void main(String[] args) {  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  List<String> list1 = new ArrayList<String>();  System.out.println("Enter several lines:");  String str;  try {   while ((str = br.readLine())!=null) {    list1.add(str);   }   System.out.println("\nEnter another line:");   String line = br.readLine();   // ↑の位置でキーを何も押していないのに勝手にlineにnullが挿入され、   // Done!が出力される   System.out.println("Done!");  } catch (IOException e) { e.printStackTrace(); } } アドバイス宜しくお願いします。

    • ベストアンサー
    • Java
  • String型の値が大文字か小文字か判定する

    いつもお世話になっています。 String型の値が、大文字か小文字か判定することはできないのでしょうか? char型だと Charactereクラスを使用し判定が可能なのですが。 ◆char型の場合◆ List list = new ArrayList(); //比較する文字列 String mozi = "Abc"; //ループ for(int m=0;m<mozi.length();m++) { //文字を順に小文字かどうか調べる char ccc = mozi.charAt(m); //小文字の場合に限りlistに格納 if(Character.isLowerCase(ccc) == true) { list.add(ccc); } } //表示 for(int l=0;l<list.size();l++) { System.out.println("list="+list.get(l)); } したいのが、 ◆String型◆ List list = new ArrayList(); List list2 = new ArrayList(); list.add("TEST"); list.add("sam"); list.add("OSIETE"); for(int l=0;l<list.size();l++ ) { String compareMozi =(String) list.get(l); //ここで文字列compareMoziが大文字か小文字か調べて、小文字のときだけlist2に格納する } な感じです。 宜しくお願いします。

    • ベストアンサー
    • Java
  • 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 } どうもうまくいきませんので教えて下さい。

専門家に質問してみよう