Java初心者による総称型ArrayList<E>の修正方法

このQ&Aのポイント
  • Java初心者が作成したサブ関数で、総称型ArrayList<E>に関するエラーが発生しています。
  • エラーメッセージは「ArrayListはraw型です。総称型ArrayList<E>への参照は、パラメータ化する必要があります。Listはraw型です。総称型ArrayList<E>への参照は、パラメータ化する必要があります。」です。
  • 修正方法としては、ArrayListとListのジェネリクスを追加してパラメータ化する必要があります。
回答を見る
  • ベストアンサー

総称型ArrayList<E>への参照はパラメ-タ

Java初心者です宜しくお願いします。 0から8までの数字をランダムに並べ替えるサブ関数を作成しました。 Eclipse上で単独のプログラムとして動かした場合には、エラーは出ませんが、他のプログラムの サブ関数として動かそうとすると、 「ArrayListはraw型です。 総称型ArrayList<E>への参照は、パラメ-ター化する必要があります。 Listはraw型です。総称型ArrayList<E>への参照は、パラメ-ター化する必要があります。」と いうエラーが出ます。 どのように修正してやればいいのでしょうか。 ================================================================================ public void ShuffleTest() { List c = new ArrayList() ; for ( int i = 0 ; i < 9 ; ++ i ) { c.add( new Integer( i ) ) ; } Collections.shuffle(c); // [?�?�?�?�] int j = -1 ; for ( int i = 0 ; i < 9 ; ++ i ) { // toString(c.get( i )) ; System.out.print( c.get( i ) + " " ) ; int k = j + 1 ; s_Oder[ k ] = i ; System.out.print( "s_Oder["+ k + "] =" + i ) ; } }

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

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

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

JDK1.5以降ではジェネリック型には型指定が必須です。 したがって、 List<Integer> c = new ArrayList<Integer>(); と特定化しなければなりません。

その他の回答 (1)

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

× List c = new ArrayList(); ○ List<Integer> c = new ArrayList<>() ;

関連するQ&A

  • arraylistの呼び出し

    A.classでB.classのarraylistを作成し Cクラスのオブジェクトを何個もarraylistに保存しているんですけど そのarraylistをbクラスで使いたいんですけど うまくいきません 例とエラー文を載せますので、教えてください 例 public class A{ int i=0; int b=0; public static void main(String[] args){ ArrayList<B> strs=new ArrayList<B>(0); for(b=0;b<30;b++){ B b =new B(); //ここは何回も作ってます strs.add(b,i);   i++; } } public ArrayList get(){ return strs; } } class C { A a; static count=0; public void syutoku(SimpleTrajectoryViewer si){ this.a=a; } public void c(){ B b=new B(); ArrayList b =a.get(); B p=b.get(count); count ++; } } エラー文はクラスの ArrayList b =a.get();の部分で 互換性のない型 期待値  B 検出値     object と出ています 解決策教えてください 全てのプログラムを書いてるわけではありませんので おそらく関係のあるだろうってところを書きましたので わかりづらかったらすみません

  • ArrayListによる計算表作成

    for文を使用し九九の計算結果を配列に格納し、その配列内の情報を表形式で表示してみる。※配列はArrayListを使用すること 上記の問題を解いています。 -------------------------------------------------------------- import java.util.ArrayList; public class m4_2 { public static void main(String args[]) { ArrayList list = new ArrayList(); String[]s = new String[9]; for(int i = 1; i<=s.length; i++){ for(int j =1; j<=s.length; j++){ list.add((i * j));     //ここがどのように記述するか?? } System.out.print(list.get(0)); System.out.print(list.get(1)); System.out.print(list.get(2)); System.out.print(list.get(3)); System.out.print(list.get(4)); System.out.print(list.get(5)); System.out.print(list.get(6)); System.out.print(list.get(7)); System.out.print(list.get(8)); System.out.print("\n"); } } } ---------------------------------------------------------- 実行結果イメージ 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 (以下省略) 私の書いたソースでは1の位しか計算してくれません。 今月から本格的にJavaを勉強し始めた初心者なので どうかよろしくお願いいたします。

    • ベストアンサー
    • Java
  • arraylist 二次元配列

    こんにちは 今アレイリストの二次元配列を学習しています DBからデータを取得で表示したいと思っています そこでfor文の拡張とつかうとうまくいうのですが 普通に記述するとうまくいきません 拡張FOR 文を使うのは初めてなので 何が違うかアドバイスお願いします コンパイルできません↓ if(request.getAttribute("list")!=null || request.getAttribute("list1")!=null || request.getAttribute("list2")!=null){ ArrayList<ArrayList> hai = new ArrayList<ArrayList>(); ArrayList list = (ArrayList)request.getAttribute("list"); if (list != null) { hai.add(list); } ArrayList list1 = (ArrayList)request.getAttribute("list1"); if (list1 != null) { hai.add(list1); } ArrayList list2 = (ArrayList)request.getAttribute("list2"); if (list2 != null) { hai.add(list2); } for (int i = 0; i < hai.get(0).size(); i++) { %> <table border="3"> <tr> <% for (int k = 0 ; k <= hai.size(); k++) { %> <td width="60"> <% out.print(hai.get(i)); } %> コンパイルOK 表示できています <% if(request.getAttribute("list")!=null || request.getAttribute("list1")!=null || request.getAttribute("list2")!=null){ ArrayList<ArrayList> hai = new ArrayList<ArrayList>(); ArrayList list = (ArrayList)request.getAttribute("list"); if (list != null) { hai.add(list); } ArrayList list1 = (ArrayList)request.getAttribute("list1"); if (list1 != null) { hai.add(list1); } ArrayList list2 = (ArrayList)request.getAttribute("list2"); if (list2 != null) { hai.add(list2); } for (int i = 0; i < hai.get(0).size(); i++) { %> <table border="3"> <tr> <% for (ArrayList list4 : hai) { %> <td width="60"> <% out.print(list4.get(i)); } %> <br> </tr> </table> <% 上のソースの エラーメッセージ 2013/04/16 9:24:12 org.apache.catalina.core.ApplicationDispatcher invoke 致命的: サーブレット jsp のServlet.service()が例外を投げました java.lang.IndexOutOfBoundsException: Index: 2, Size: 2 よろしくお願いします

    • ベストアンサー
    • Java
  • ArrayList でスタックを

    初歩的でツマラナイかもしれません。 import java.util.ArrayList; でスタックを実現するクラス"MyStack"を書きました。 フィールドは private ArrayList<Integer> stack = new ArrayList<Integer>(); のみという条件です。 MyStack.java - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - import java.util.ArrayList; public class MyStack {   private ArrayList<Integer> stack = new ArrayList<Integer>();      // データを先頭に追加   public void push( int item ) {     stack.add( item );   }   // 先頭のデータを取り出す   public int pop( ) {     int rtn;     if( stack.isEmpty() ) {       System.out.println( "スタックは空です." );       System.exit( 1 );     }          rtn = stack.get( 0 );     stack.remove( 0 );     return rtn;   } } このMyStackを実行するクラス"MainForMyStack"を書きます。 実行結果は、標準出力に 43210 と出ることを想定しています。 MainForMyStack.java - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - import java.util.ArrayList; public class MainForMyStack {   public static void main(String[] args) {     MyStack stack = new MyStack();     // 0,1,2,3,4 をスタックに追加     for( int i=0; i < 5; i++ ) {       stack.push( i );     }     // スタックのデータを先頭から取り出す     for( int i=0; i < stack.size(); i++ ) {       System.out.print( stack.pop() );     }   } } さて、MainForMyStack.java の i < stack.size(); の箇所でエラーが出るのはなぜでしょう? どなたかご教授の方お願いします。

    • ベストアンサー
    • Java
  • お世話になります。下記のjavaの総称を詳しい方がいらっしゃいましたら

    お世話になります。下記のjavaの総称を詳しい方がいらっしゃいましたら、ぜひ教えてお願いします。 Class A{ private HashMap dataTable; private void a1(){ ArrayList its = (ArrayList)(dataTable.get(key1)); if (its==null){ its = new ArrayList(); its.add(new B) } ... dataTable.put(key1,its); } private void b1(){ ArrayList its = (ArrayList)(dataTable.get(key3)); if (its==null){ its = new ArrayList(); its.add(new C()) } ... dataTable.put(key4,its); } } B、Cはぞれぞれ違うObjectです。 JDK5をアップすると、HashMap,ArrayListの無検査呼びコンパイラ警告があって、総称に改修したいですが、改修するやり方をご存知の方がいらっしゃいましたら、ぜひ教えてくださいまして、非常に助かります。

  • ArrayListなかへのArrayListオブジェクトのセット方法

    スケジュールのプログラムを作成していまして、1日分のオブジェクトをArrayListにいれて、さらに、1日分のArrayLisのオブジェクトを1ヶ月のArrayListにいれました。 そこで、1ヶ月のArrayListのオブジェクトから1日のArrayListのオブジェクトに分解して、表示したところに、最後の日にちの件数が表示されました。 1.ArrayListにオブジェクトをいれますと、うまく表示されます。 2.ArrayListにArrayListオブジェクトをいれまして、総件数を表示したら、1日から31日までのArrayListのsizeメソッドが最後の日にちが表示されます。よって1日から30日のArrayListに31日分のArrayListが上書きされているように思われます。 1と2の違いと原因をご教授下さい。 //arraylist作成1ヶ月分。 public ArrayList setMonth(int year,int month,int user_id){ -省略- ArrayList monthList=null; for(int count=1; count<=day; count++){ monthList=new ArrayList(); ArrayList dayList=new ArrayList(); dayList=setDay(year,month,count); monthList.add(dayList); } for(int a=0; a<monthList.size(); a++){ ArrayList saa = (ArrayList)monthList.get(a); int mm= saa.size(); System.out.println("mm:"+mm); } return monthList; -省略- } //ArrayList作成1日分 public ArrayList setDay(int year,int month,int day){ ArrayList aList = new ArrayList(); -省略- while(rs.next()){ Allday schAll=new Allday(); schAll.setSchedule_id(rs.getInt("schedule_id")); schAll.setContents(rs.getString("contents")); aList.add(schAll); } for(int b=0; b<aList.size(); b++){ int si= ((Allday)aList.get(b)).getSchedule_id(); String con=((Allday)aList.get(b)).getContents(); } return aList; -省略- }

    • ベストアンサー
    • Java
  • 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
  • ArrayList の継承について(初心者です)

    買い物かごクラスのプログラムを作っています。 このソースはフィールドにListを持たせているのですが、ArrayList を継承 してCartクラスを作りたいです。そうすることで、CartクラスのaddItem() メソッドやremoveItem()メソッドはmainでメソッドを呼び出せば良いため、 不要になると思うのですが、合計金額を求めるときに、どのように商品値段 を参照していいのかわかりません。 また、ArrayList を継承する場合、public class Cart extends ArrayList という書き方で良いのでしょうか? public class Cart { List<Item> itemList = new ArrayList<Item>(); public ShoppingCart(){} //商品をカートに追加 public void addItem(Item item){ itemList.add(item); } //カート内に入っている商品の合計金額を返却 public int getTotalPrice(){ int total=0; for(int i=0;i<getItemSize();i++){ total+=itemList.get(i).getPrice(); } return total; } //リストの指定された位置にある要素を削除 public void removeItem(int index){ itemList.remove(index); } }

  • ArrayListを使ったJavaコンパイルがうまくいかない

    題名どおりなのですが、まず以下のようなソースを 書きました。 import java.util.*; class Rab{ private String name; private int number; public Rab(){ name= ""; number=0; } public void setName(String name){ this.name=name; } public void setNumber(int number){ this.number=number; } public String getName(){ return name; } public int getNumber(){ return number; } } public class Rabexc{ public static void main(String[] args){ Rab[] rab=new Rab[5]; for(int i=0; i<5; i++){ rab[i]=new Rab(); } rab[0].setName("Owner"); rab[1].setName("Adminstrator"); rab[0].setNumber(1); rab[1].setNumber(2); ArrayList al=new ArrayList(); al.add(rab[0]); al.add(rab[1]); for(int i=0; i<al.size(); i++){ rab[i]=(Rab)al.get(i); System.out.println("name: "+rab[i].getName()+"number: "+rab[i].getNumber()); } } } これを実行してみたところ、 Rabexc.java:41: 警告:[unchecked] raw 型 java.util.ArrayList のメンバとしての add (E) への無検査呼び出しです。 al.add(rab[0]); ^ Rabexc.java:42: 警告:[unchecked] raw 型 java.util.ArrayList のメンバとしての add (E) への無検査呼び出しです。 al.add(rab[1]); ^ 警告 2 個 という警告が出てコンパイルできません。 サイト・参考書なども調べて考えていたのですが、いまいち問題の解決法が浮かばないため、詳しい方いましたら教えていただけると幸いです。 宜しくお願い致します。

  • 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

専門家に質問してみよう