- PR -

ArrayList removeRangeの使い方

投稿者投稿内容
みーちく
大ベテラン
会議室デビュー日: 2002/08/29
投稿数: 131
投稿日時: 2003-06-04 17:07
みーちくと申します。

初歩的な質問なんですが、ご教授願います。
ArrayListに格納されているリスト中にあるキーワードが書かれている行が
あります。その行と次の改行を全て削除したいと考えてます。
そこで、indexOf(キーワード)でそのインデックス番号を取得して、
removeRangeを使用して削除したいと考えたのですが、
うまく動作できませんでした。
removeRangeの使い方を教えて頂けませんでしょうか。
宜しくお願い致します。

[エラーメッセージ]
removeRange(int,int) は java.util.ArrayList で protected アクセスされます。

[ArrayList]
a
b
aaa :: aaa /aaa/b/c ←削除
aaa : /b/c/d ←削除
gaaa /d ←削除
g123 /aaa/aa/a ←削除
 ←削除
bbb :: bbb /bbb/d/f
bbb : /a/b/c
gbbb /f
g132 /bbb/bb/b

c
d
amnaky
ベテラン
会議室デビュー日: 2002/09/13
投稿数: 75
お住まい・勤務地: 東京
投稿日時: 2003-06-04 17:37
これは、コンパイルエラーですよね。

protectedなので、使い方というより、
はじめから使えないのではないでしょうか。
みーちく
大ベテラン
会議室デビュー日: 2002/08/29
投稿数: 131
投稿日時: 2003-06-04 17:57
みーちくです。

amnakyさん。返信ありがとうございました。
protectedのものは使えなかったのですね。

大変失礼致しました。

Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2003-06-04 22:43
いやいや、protectedだから使えるでわけでしょう。
ただ、publicとちがって他のクラスのオブジェクトから直接操作できない
だけです。

扱いたいデータの集まりを ArrayListクラスのサブクラスとしてください。
面倒な気がするかも知れませんが、そのほうが良い設計になることが多いです。

あと、複数のスレッドから利用される場合は、同期を考慮することも忘れては
なりせんので、念の為。
yamasa
ベテラン
会議室デビュー日: 2003/02/15
投稿数: 80
投稿日時: 2003-06-05 01:06
removeRangeはprotectedメソッドなので直接呼び出すことはできませんが、
以下のように一旦サブリストを取得すれば間接的に呼び出すことができます。
コード:
String[] str = {"a", "b", "c", "d", "e", "f"};
List list = new ArrayList(Arrays.asList(str));

System.out.println(list);

list.subList(1, 4).clear();

System.out.println(list);

== 実行結果 ==
[a, b, c, d, e, f]
[a, e, f]


詳しくはremoveRangeとsubListメソッドのAPI仕様を参照してください。
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2003-06-05 02:11
おお〜。
クリアするときにサブリストを使うとこまで頭が回りませんでした.
amnaky
ベテラン
会議室デビュー日: 2002/09/13
投稿数: 75
お住まい・勤務地: 東京
投稿日時: 2003-06-05 10:27
おおお、こんなことできるんですねえ。
確かにremoveRangeを直接呼べるようにするよりも
こっちのほうがすっきりしますね。

勉強になりました。
みーちく
大ベテラン
会議室デビュー日: 2002/08/29
投稿数: 131
投稿日時: 2003-06-05 10:55
みーちくです。

amnaky様、Kissinger様、yamasa様

いろいろありがとうございました。

Kissingerさん
>扱いたいデータの集まりを ArrayListクラスのサブクラスとしてください。
>面倒な気がするかも知れませんが、そのほうが良い設計になることが多いです。
私自身、今までサブクラスを呼び出すという事をやったことがありません。
Kissingerさんのおっしゃる事がちょっと???という感じです。
すみません。勉強いたします。

yamasaさん
ListとArrayListを使う場合、違いなどがあるのでしょうか?
私は、なぜかず〜とArrayListのみ使用してプログラムを作っておりました。

宜しくお願い致します。

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