• ベストアンサー

ArrayListクラスを利用するプログラムについて質問があるのですが。

「Genericsを用いたArrayListを使用しループ処理にはiteratorを使用する。 という指定の下、 ArrayListのインスタンスを生成し次の5つの文字列を追加した後、 for文を使ってリストの中身を全て順番に画面表示したいんです。 "AA" "BB" "CC" "DD" "EE" --------------------------- import java.util.ArrayList; class TestA{ public static void main(String args[]) { ArrayList<String> array = new ArrayList<String>(); array.add("AA"); array.add("BB"); array.add("CC"); array.add("DD"); array.add("EE"); } } --------------------------- ここからよく解らないので教えていただけませんでしょうか?

  • Java
  • 回答数4
  • ありがとう数24

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

  • ベストアンサー
  • mahojula
  • ベストアンサー率32% (21/65)
回答No.2

package codeget; import java.util.ArrayList; import java.util.ListIterator; class TestA { public static void main(String args[]) { ArrayList<String> array = new ArrayList<String>(); array.add("AA"); array.add("BB"); array.add("CC"); array.add("DD"); array.add("EE"); //listIteratorに入れ替えて ListIterator li = array.listIterator(); while(li.hasNext()){//まだ要素がある場合にtrue System.out.println(li.next());//nextで次の要素の取り出し } } }な 感じかもしれません。

hikaru333
質問者

お礼

ありがとうございます。 なんとかできました。

その他の回答 (3)

回答No.4

何かJDKのバージョンがバラバラですね。質問者さんがおっしゃっているのは、大文字で始まるインタフェースじゃなくって、末尾に()のあるメソッドの方だと思います。 ちなみに、・・・ JDK 1.2以降→iterator() JDK 5.0以降[JLS 3.0]→Generics[総称型]、for-each[拡張for文] です。 java.util インタフェース List<E> Iterator<E> iterator() http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/List.html#iterator() 具体的なJavaコードに関しては、以下のサイト内に「通常のfor文」の場合と、「拡張for文」の場合の2つが載っています。厳密には、全く同じではないらしいですね。(私も今、知った。) Java言語機能(JDK5.0(Tiger)新機能) 2章 拡張for文 http://www.techscore.com/tech/J2SE/JavaLanguage/2.html

hikaru333
質問者

お礼

ありがとうございます。 ちょっと調べてみます。

  • HarukaV49
  • ベストアンサー率53% (48/89)
回答No.3

iteratorを使用しない、全要素の出力 for(int i=0, n=array.size(); i<n; i++) { System.out.println( array.get(i) ); } iteratorを使用した、全要素の出力 for(String s : array) { System.out.println( s ); } iteratorを使うと、非常にシンプルな文法で全要素にアクセスできます。

hikaru333
質問者

お礼

2通り記述してくださりありがとうございました。 解りやすいです。

回答No.1

こんな感じですかね・・・。 for(Iterator iter = array.iterator() ; iter.hasNext() ; ) {  System.out.println((String)iter.next()); }

hikaru333
質問者

お礼

ありがとうございます。できましたー。

関連するQ&A

  • エラーを解決したいんですが。

    // Genericsを用いたArrayListを使用し // ループ処理にはiteratorを使用しない。 // for文を使ってリスト中身が奇数の場合はそのまま画面表示。 // 偶数の場合は-1をかけてから画面表示。 import java.util.ArrayList; class Test{ public static void main(String[] args) { //GenericsのInteger型でArrayListのインスタンスを生成 ArrayList<Integer> array = new ArrayList<Integer>(); array.add(1); array.add(2); array.add(3); array.add(4); array.add(5); for(int i=0; i<array.size(); i++) { Integer integer = array.get( i ); //もし値が偶数だったら if(integer % 2 == 0){ integer *= -1; System.out.println( integer ); } //(それ以外)もし値が奇数だったら else{ System.out.println( integer ); } } } } 上記のプログラムで、 >Integer integer = array.get( i ); の場所が、「交換性がない型」と言われ、エラーになってしまうんですが どうしたらいいですか?

    • ベストアンサー
    • Java
  • ArrayListのcloneメソッド

    お世話になります。 ArrayListのcloneメソッドなんですが、API上は「ArrayList のインスタンスのシャローコピーを返します。要素自体はコピーされません。 」と記載がありますが、 「ディープコピー」をしているような感じがして、なぜ「シャローコピー」と言っているのか、教えて欲しいです。 しかも、要素自体もコピーされているような…。 自分の理解では、 シャローコピー:コピー元、コピー先で同じオブジェクトを参照する ディープコピー:コピー元、コピー先で違うオブジェクトを参照する 試したソースは以下です。 --------------- import java.util.ArrayList; public class Test { public static void main(String[] args) { ArrayList<String> array = new ArrayList<String>(); array.add("a"); array.add("b"); ArrayList<String> array2 = (ArrayList<String>) array.clone(); array2.add("c"); System.out.println("array:" + array); System.out.println("array2:" + array2); } } --------------- cloneメソッドはシャローコピーなので、array2で「c」がaddされたら、arrayも「c」が追加されて、 array:[a, b, c] array2:[a, b, c] となるはずが、 array:[a, b] array2:[a, b, c] となります。 array、array2は別々のオブジェクトを参照しているような気がします。 恐らく大きな勘違いをしているのかもしれませんが、 調べてもいまいち理解できませんでした。 お手数おかけしますが、よろしくお願い致します。

    • ベストアンサー
    • Java
  • Javaのプログラムについて教えてください!

    Genericsを使ってエラーの出ないようにするにはどうすればいいですか? import java.util.*; public class Sample{ public static void main(String[] args){ ArrayList ary = new ArrayList(); ary.add("Mac"); ary.add("Wiindows"); ary.add("Linux"); for(Object str:ary){ System.out.println((String)str); } } }

    • ベストアンサー
    • Java
  • C#でのリストへの変数の格納

    namespace HtmlCreater { public partial class Form1 : Form { public Form1() { InitializeComponent(); } string aa = "xxx"; string bb = "xxx"; string cc = "xxx"; string dd = "xxx"; string ee = "xxx"; //リスト作成 ArrayList list = new ArrayList(); フォーム作成 aaForm form = new aaForm(aa, bb, cc, dd, ee); list.Add(form); string firstItem = (string)list[0]; Console.WriteLine(firstItem); } class aaForm(string aa, string bb, string cc, string dd, string ee) { String a = "aa"; String b = "bb"; String c = "cc"; String d = "dd"; String e = "ee"; } } } 以上のようなプログラムを使って、リスト list に変数aa,bb,cc,dd,eeを格納したいと考えています。 が、コンパイルすると以下のようなエラーメッセージが表示されます。 識別子が必要です。キー ワードは 'string' です。 無効なトークン '(' が クラス、構造体またはインターフェイスのメンバ宣言で使用されています。 波線はString a = "aa" String b = "bb" String c = "cc" String d = "dd" String e = "ee"にかかっています。 ここで必要な識別子とはなんでしょか?また、その他おかしいところはあるのでしょうか? ご存知の方がいたらご教授宜しくお願いします。

  • ArrayListを改良したい

    visual C# 2010 Express を使用しています。 ArrayListは動的に要素を追加できるの便利なのですが、 次のような使い方で要素を取り出そうとするとasキャストが必要になってしまいます・・・ class Data : Dictionary<string, string> { } class DataList : ArrayList { public void Add(Data value) { base.Add(value as Data); } } class Program { static void Main(string[] args) { var d = new Data(); d["a"] = "aa"; d["b"] = "bb"; DataList arr = new DataList(); arr.Add(d); // var dd = arr[0] as Data; var dd = arr[0]; Console.WriteLine(dd["a"]);// エラー 角かっこ [] 付きインデックスを 'object' 型の式に適用することはできません。 Console.ReadLine(); } } そこでというか、ラップした独自のクラスを作りたいと思い上のような感じで作成したのですが、 やはり同じエラーになってしまいます・・・ asキャストを必要とせず、そのままDataクラス(Dictionary<string, string>)を 取り出すためにはどのように作成したら良いのでしょうか?

  • ArrayListクラスのインスタンスの宣言について

    まず初めに一言。 今自分が使用している本は3年ぐらいのモノです。 なので、宣言の仕方が変わっているかもしれません。 その上で質問です。 まず、ソースコードを貼り付けます。(JSP) <%@ page language="java" contentType="text/html; charset=Shift_JIS" import=java.util.*"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>配列の挿入、削除(ArrayList)</title> </head> <body> <% //配列を定義する ArrayList array = new ArrayList(); //値をセットする array.add("1111"); array.add("2222"); array.add("3333"); //配列の値を表示する for (int i=0; i<array.size(); i++) { System.out.println("<p>" + (i+1) + "番目:" + array.get(i)); } //値を挿入する array.add(2, "9999"); //3番目の値を削除する array.remove(2); //変更後の配列の値を表示する for (int i=0; i<array.size(); i++) { out.println("変更後" + (i+1) + "番目:" + array.get(i)); } %> </body> </html> ArrayListクラスのインスタンスの宣言はどこか間違っているでしょうか。 Eclipse曰く、 『ArrayListはraw型です。ArrayListの参照はパラメータ化する必要があります。』 という警告が表示されます。 エラーでは無いみたいなのですが、やはり警告されている状態を放っておくのはあまり気持ちいいモノではありません。 そこで、質問です。 この警告を消す方法はあるのでしょうか。 もし、あるのでしたら教えて頂けると幸いです。 どうぞ宜しくお願い致します。

    • ベストアンサー
    • Java
  • 「型 ArrayList は総称ではありません・・・。」エラーについての問題です。

    コンニチハ、javaの初心者s-unです。 Eclipse(Ver:3.1.1)でJavaのプログラムを書いています。 *********************************** import java.util.ArrayList; class collectionTest1{ public static void main(String args[]){ ArrayList<String> array = new ArrayList<String>(); } } *********************************** エラーメッセージは 「型 ArrayList は総称ではありません。引数 <String> でパラメーター化できません。」 JDK準拠>>コンパイラー準拠レベル5.0になっています。 原因をお教え頂けますと幸いです。 よろしくお願い申し上げます。

    • ベストアンサー
    • 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
  • このプログラムが実行できません。

    スタックの動きを再現するプログラムを作ったのですが、エラーがでます。プログラムは以下に示します。 メインクラス public class mainStack { public static void main(String[] args) { StackTest stack=new StackTest(); stack.push("AAAAA"); stack.push("BBBBB"); } } スタックのクラス import java.util.ArrayList; @SuppressWarnings("unchecked") public class StackTest implements Stack { ArrayList list=new ArrayList(); public int AA=0; public boolean empty() { if(list.isEmpty()==true){ return true; } else{ return false; } } public void pop() { list.remove(AA); AA--; } public void push(String element) { list.add(element); AA++; } public void top(){ System.out.println(list.get(AA)); } } 何故かlist.add()のところにエラーが出てしまいます。是非分かる方解答お願いします。

    • ベストアンサー
    • Java
  • Excelで行を切り貼りをすると上書きされてしまうのでしょうか?

    5行ある下2行を切り取って、1行目に移動したいのですが、 AA BB CC DD EE ↓こうならず、 DD EE AA BB CC ↓こうなります。 DD EE CC 上書きされるようです。 行のコピー&ペーストは挿入されないのでしょうか?

専門家に質問してみよう