LinkedListさんってどんな人?
LinkedListさんは「ひもでつながれたお友達リスト」をイメージしてみて。 例えば:
「リンゴさん」と「バナナさん」と「オレンジさん」が、お友達として手をつないでいる。
手をつないでるから、新しいお友達(例えば「ぶどうさん」)をどこかの間に追加するのが簡単。
何が特別?
普通の配列(荒井さん)は、みんながぎゅうぎゅうに整列しているから、新しい人を追加するときは場所を作るために、全員ずらさないといけない。これが時間かかるよね。
でもLinkedListさんは、手をつないだ状態だから:
途中に新しい人を入れるとき、手をつなぎ直すだけでOK!
例えば、「リンゴさん」と「バナナさん」の間に「ぶどうさん」を入れるなら、「リンゴさん→ぶどうさん→バナナさん」と手をつなぎ直すだけ。
どんな場面で使う?
LinkedListさんが活躍するのはこんな場面:
お友達リストの途中に新しい人を追加したいとき。
途中の人を削除するとき(手をつなぎ直すだけでサッと削除できる)。
でも…ちょっと不器用なところも
LinkedListさんは手をつないでいるから、誰かを探すときに「ひもをたどって順番に見ていく」必要があるんだ。「オレンジさんどこ?」って聞くと、「リンゴさん」「バナナさん」「あ、オレンジさんだ!」みたいに時間がかかることもある。
私の意見
LinkedListさんのすごいところは、「入れる順番をちゃんと指定できる」ことなんだよ!たとえ「89番目のブドウさんとトマトさんの間に入りたい」というリクエストでも、LinkedListさんなら対応可能だよ。
順番を指定して要素を追加する方法
LinkedListさんの場合、「指定したインデックス(場所)」に新しい要素を追加する機能が用意されているんだ。コードではadd(index, element)
というメソッドを使うよ!
コード例:89番目の間にブドウさんを追加
import java.util.LinkedList;
public class Example {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
// いくつかのデータを追加
for (int i = 0; i < 100; i++) {
list.add("データ" + (i + 1)); // "データ1", "データ2", ..., "データ100"
}
// 89番目の間に「ぶどう」を追加(インデックスは88)
list.add(88, "ぶどう");
// 追加結果を表示(90番目の前にぶどうがある)
System.out.println(list.get(87)); // データ88
System.out.println(list.get(88)); // ぶどう
System.out.println(list.get(89)); // データ89
}
}
動きの説明
list.add(88, "ぶどう");
:「88番目の位置(インデックス)」を指定して、ぶどうさんを追加している。
インデックスは0から始まるので、「89番目」は実際にはインデックス88となる。
既存のデータをずらす:
新しい要素が指定された場所に入ると、後ろのデータが一つずつ押し出される感じ。
LinkedListさんの得意な場所
この方法は特に「途中にデータを追加したいとき」や「順番を細かく指定したいとき」に便利!ただし、こうした操作を頻繁に行うとLinkedListさんも忙しくなって遅くなる場合があるから、データの規模や操作の頻度に応じて適切な使い分けが重要だよ。