- - PR -
Linkedlistでsetメソッドで要素範囲内の要素を指定しているのに、IndexOutOfBoundsExceptionになる
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-08-11 11:51
はじめまして、javaで連結リストを作成しようとしたら、以下のような問題が発生しました。setメソッドの仕様を見ると、特定の要素を指定できると書いていたのですが、実際に指定すると、要素が範囲外となってエラーになります。(要素は1から1000まであるはずなのですが。)要素を1にするとうまくいくのですが、そのほかの要素を指定しても下記エラーになってしまいます。エラーの原因と、指定した要素のデータを入れ替える方法を教えてください。よろしくお願いいたします。
エラー内容 java.lang.IndexOutOfBoundsException: Index: 100, Size: 1 a.addLast("100") a.remove("050") at java.util.LinkedList.entry(Unknown Source) at java.util.LinkedList.add(Unknown Source) at performance.Linkedlist2.main(Linkedlist2.java:149) Exception in thread "main" package performance; import java.util.*; /** * @author Administrator * * この生成されたコメントの挿入されるテンプレートを変更するため * ウィンドウ > 設定 > Java > コード生成 > コードとコメント */ public class Linkedlist2 { static void addAll(List list) { for (int i=1;i<1000;i++) { list.add(new Integer(i)); } } public static void main(String[] args) { // 空のLinkedListの生成。 LinkedList a = new LinkedList(); // 要素を追加。 a.addAll(a); // 連結リストの末尾に要素1001を挿入。 a.addLast(new Integer(1001)); System.out.print("a.addLast(\"100\") "); //System.out.println("LinkedList a:"+a); // 連結リストから要素500を削除。 a.remove(new Integer(500)); System.out.print("a.remove(\"050\") "); //System.out.println("LinkedList a:"+a); // 位置100の要素を要素000に置き換える。 /* */ a.add(100,new Integer(0)); System.out.print("a.set(100,\"0\") "); } } |
|
投稿日時: 2004-08-11 11:55
すいません、訂正です。最後から2番目の行の
a.add(100,new Integer(0)); は a.set(100,new Integer(0)); の間違いです。 (ちなみにどちらで実行しても同じエラーが出ます。) |
|
投稿日時: 2004-08-11 12:36
勘違いにつき削除しました。
[ メッセージ編集済み 編集者: uk 編集日時 2004-08-11 13:54 ] |
|
投稿日時: 2004-08-11 13:16
> // 要素を追加。
> a.addAll(a); ではなくて addAll(a); では? a.addAll(a)だとLinkedList#addAll()が呼び出されます。 |
|
投稿日時: 2004-08-11 15:46
ぼんじぃさまありがとうございます。
おかげさまで解決できました。 ありがとうございました。 |
1
