今回はLinkedListについて。
コードの形はArrayListととても似ている。
ArrayListについては以下参照。
【Javaプログラミング】ArrayListとは?使い方についても-プロショvol.73
それでは早速行ってみよー!
LinkedListとは?
それぞれのデータにあるノード(接続ポイント)が次のノードに繋がっているという特徴がある。
矢印が一方通行になっているけど、お互いにつなぎあっているよ。
それに対してArrayListは配列と同じくデータを格納するもの。
他のデータとはつながっていない。
データの追加・削除を頻繁に行う場合はLinkedListの方が高速で処理される。
それに対してArrayListは検索に優れている。
LinkedListで検索する場合、検索するたびにLinkedList内の全ての要素が走査されるから時間がかかる。
ArrayListは配列構造。
getメソッドなどを使用した検索操作を行う場合はArrayListの方が高速で処理される。
追加・削除と検索のどちらを多く行うかによってLinkedListとArrayListを使い分けることでプログラムのパフォーマンスを上げることができる。
少数のデータならともかく、データが膨大になっていくとよりパフォーマンスに影響が出てくる。
LinkedListの構文
LinkedListの構文は以下の通り。
形はArrayListと同じ。
LinkedListもAPIの一つ。
APIについては以下参照。
【Javaプログラミング】APIとは?使い方についても-プロショvol.64
使用するには「java.util」というパッケージのLinkedListクラスを導入する必要がある。
ArrayListの部分をLinkedListに変えれば良いだけ。
LinkedListで使えるメソッド
LinkedListではデータの追加と削除という操作に優れている。
add()とremove()メソッドがよく使用される。
add()・・・データを加える際に使用するメソッド
remove()・・・データを削除する際に使用するメソッド
ArrayListで使用したメソッドはLinkedListでも使用することが可能。
詳しくはArrayListについての記事を参照。
LinkedListを使用した例
LinkedListを使用したプログラムを作成してみた。
import java.util.LinkedList;
public class LinkedListUse {
public static void main(String[] args) {
LinkedList <String> subject = new LinkedList<String>();
subject.add(“数学”);
subject.add(“国語”);
subject.add(“理科”);
subject.add(“科学”);
subject.remove(“数学”);
System.out.println(subject);
subject.set(1, “社会”);
System.out.println(subject);
}
}
以上を実行すると以下の結果が得られる。
[国語, 社会, 科学]
1行目の結果は、「subject.remove(“数学”);」までの結果を表示するもの。
この時点では「数学」の削除されたから「[国語, 理科, 科学]」が表示される。
2行目は「1」に「社会」を入れるということを表す(set()メソッドにより)。
従って「理科」の部分に「社会」が上書きされることになる。
配列と同じく、番号は一番初めは「0」が割り振られている。
国語が「0」、理科が「1」、科学が「2」。
今回は「1」に社会を入れるようにということで「理科」が「社会」に上書きされた。
最後に
一見するとArrayListと何が違うの?と思ってしまうけれど、それぞれの処理能力に差がある。
LinkedListは追加と削除、ArrayListは検索に優れている。
プログラムを作る際はぞれぞれの機能を生かして使い分ければパフォーマンスが上がる。
今回作ったプログラムは情報量が少なすぎてパフォーマンスの違いがあまり顕著でなかったけれど、しっかりとポイントを押さえて使い分けていきたいと思った。
辞書とか作れるんかな?
コメント