1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

「数億規模スタートアップのCTO講師」と「エンジニアキャリア専門のポテパン」が贈る、実践型Rubyスクール。

【Java入門】list.removeを使い分ける3つの方法とは?

Pocket

今回のテーマは、リストの削除についてです。
リストを作ったものの、後からこれはいらないってことあると思います。
そんなときにリストは、配列とは違って削除をすることができます。
そしてその方法は、は大きく分けて3つあります。
今回はその3つの方法とどれが一番効率よくできるのかを学んでいきましょう。

listの項目を削除するには?

list.remove(xxx);を使う

リストの削除は、list(リスト名).remove(項目)でいらないリストを削除することができます。
命令自体はものすごいシンプルなので大きな混乱はないと思います。
removeは、日本語訳にすると、『削除する』という意味を持っているので大変わかりやすいですね。
また海外製のソフトを使っている方にとっては大変馴染みのある表現なので覚えやすいかと思います。
プログラミングには、何をしているか一見わかりませんが、英単語の意味がわかれば大体何をしているか見抜けるところも魅力のうちの1つです。
是非とも英単語はしっかりと覚えておきましょう。
それではlist.removeを使い分ける3つの方法を説明します。

list.removeを使い分ける3つの方法

リストを削除するその3つの方法とは、要素を指定するやり方とそのまま項目をしているやり方、そして初心者には少し難しい話になりますが、イテレータを指定するやり方があります。
特に最後のイテレータのところは読み飛ばしても構いませんが、ここで理解しておくと大きなプラスになります。

1つ目:要素番号を指定


あなたは要素のことを覚えているでしょうか?
もしうーんと悩んでしまったらこちらを読み返しましょう。
そうです!配列でもお馴染みのインデックスが要素番号に当たります。
使い方は簡単で、list.remove(0);といった感じで使われ、これだと先頭に入ってあるリストを削除します。
シンプルなリストは実はこれで削除ができるわけですが、要素がいっぱいだとインデックスがどこにあるか調べないとわかりません。
そんなときには次の方法でたいてい解決します。

2つ目:そのまんま項目を指定



ずばり、削除したいワードをダイレクトに指定するやり方です。
命令文も変わりませんがremove内の()には、削除したい項目をそのまま入れてあげてください。
例えば、エキストラを削除したいけどインデックスがわからない場合はこういう風にしましょう。
list.remove(“エキストラ”);からもリストの削除ができます。
しかし、実はこのやり方、もう察しがいい方はわかりますが、消したいものしか指定できません。
例えば上司とかに、○○さん悪いけどこのリスト、エキストラ以外消してくれない?と頼まれたらあなたはどうしますか?
確かにlist.removeを使うのですが、このままダイレクトにエキストラと入れてしまうとエキストラしか削除ができません
かといって、ここから更にループを回してエキストラ以外と指定しても効率が落ちます。
そんなときには、イテレータを使うと簡単にできますよ。

3つ目:イテレータを指定


イテレータとは?

イテレータとは、要素番号がなくても全てのリスト内のデータにアクセスできる便利な機能を持っています。
まだArrayList(これまでのリスト)では、要素番号が取得できるのでそこまでこだわる必要はありませんが、リストの中にはこの要素番号を持たないリストも存在します。
そういったときにイテレータを使うと、全要素にアクセスできます。
そして、リストを削除する際も○○以外全部削除といった使い方もこのイテレータを使えば簡単にできてしまいます。
リストが何個あるかわからないときには、真っ先にイテレータを使うと全項目を把握せずともリストの削除が行なえます。

この3つの中で一番効率がいいのは?

イテレータの指定で削除する

これまで3つのやり方でlist.removeを見てきましたが、一番効率がいいのは、イテレータを使った方法です。
単純にlist.removeを使うのであれば2番めの項目をダイレクトに指定しての削除でも間違いではありません。
ただ、あなたの渡されたリストが1,000個も10,000個も合った場合には、イテレータを使ってあげるとスピーディに解決できます。
それでは、何故イテレータが好まれるのでしょうか?

何故イテレータが好まれるのか?

イテレータで削除されたものはすぐにリストにも反映されるから

それはイテレータの機能でもある削除されたものは、リストにも反映されるからです。
イテレータで削除した分が何もしなくてもリストに即反映されるので、この後に残っているリストの出力の命令が書けたりできるのです。

○○以外全削除のときのソースがシンプルすぎてわかりやすいから

そして先程にも紹介した○○以外全部削除と言われたら、イテレータで書いてあげるとものすごいシンプルで他のプログラマーにも評価してもらえる可能性のあるソースを書いてあるからです。
プログラマーはただただ机に向かって仕事をしているのではありません。
きちんと第三者があなたのあとを継ぎます。
そのときに、イテレータを知っているときちんと他人のためにわかりやすく書いてくれるありがたいと思われるのです。

おわりに

いかがでしたでしょうか?
今回はlist.removeの3つの使い分け方についてお話してきました。
イテレータに関する詳細な説明は、また機会があれば致します。
今の段階では、とりあえず要素番号を持たないリストで使うことだけ理解しておきましょう。
それと○○以外全削除と言われたときにも使うことも合わせて覚えておきましょう。
さあ、今日も一歩前進!一緒に頑張っていきましょう。

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

おすすめスクール

全国30校舎で展開されるヒューマンアカデミーのWeb講座は修了者数4万人超、講師とカリキュラムの満足度がどちらも9割を超えています。就職や転職に必要なレベルの実務スキルを身に付けられます。

初心者がプログラミングで挫折しない学習方法を無料動画で公開中。オンラインに特化したプログラミングスクール「TechAcademy(テックアカデミー)」が解説。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

イチ押しランキング

1リナックスアカデミー

リナックスアカデミー

2システムアーキテクチュアナレッジ

システムアーキテクチュアナレッジ
ページ上部へ戻る