- PR -

Linkedlistでsetメソッドで要素範囲内の要素を指定しているのに、IndexOutOfBoundsExceptionになる

1
投稿者投稿内容
Javaスターター
ベテラン
会議室デビュー日: 2004/06/14
投稿数: 67
投稿日時: 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\") ");


}
}
Javaスターター
ベテラン
会議室デビュー日: 2004/06/14
投稿数: 67
投稿日時: 2004-08-11 11:55
すいません、訂正です。最後から2番目の行の
a.add(100,new Integer(0));

a.set(100,new Integer(0));
の間違いです。
(ちなみにどちらで実行しても同じエラーが出ます。)
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-08-11 12:36
勘違いにつき削除しました。


[ メッセージ編集済み 編集者: uk 編集日時 2004-08-11 13:54 ]
ぼんじぃ
ベテラン
会議室デビュー日: 2004/05/21
投稿数: 70
投稿日時: 2004-08-11 13:16
> // 要素を追加。
> a.addAll(a);
ではなくて addAll(a); では?
a.addAll(a)だとLinkedList#addAll()が呼び出されます。
Javaスターター
ベテラン
会議室デビュー日: 2004/06/14
投稿数: 67
投稿日時: 2004-08-11 15:46
ぼんじぃさまありがとうございます。
おかげさまで解決できました。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)