JavaのLinkedListクラスの使い方のサンプルです。
| 確認環境 ・Java 8 |
目次
- LinkedListクラス
- Listインターフェース
- 要素を追加する (addメソッド)
- 要素の位置を指定して要素を取得する (getメソッド)
- 要素の位置を指定して要素を置き換える (setメソッド)
- 要素数を取得する (sizeメソッド)
- 要素を指定して要素の位置を取得する (indexOfメソッド)
- 指定の要素があるかを返す (containsメソッド)
- 中身が空かを返す (isEmptyメソッド)
- 要素の位置を指定して要素を削除する (removeメソッド)
- すべての要素を削除する (clearメソッド)
- リストを連結する (addAllメソッド)
- メソッドの引数/戻り値がリストの場合
- 要素をソートするサンプル(Collectionsクラス)
- 要素を順番に処理する(forEachメソッド)
LinkedListクラス

- 1つの変数で複数の値を保持できます。
- 要素の順序をインデックス(添字)で管理します。上記図では[0]、[1]、[2]、[3]がインデックスです。
- インデックスの先頭は0から始まります。
- 要素同士をリンクする構造です。(上記図の赤矢印)
- リストの途中への挿入や削除はリンクを付け替えるだけのため速いです。
- 読み込みは先頭または末尾から検索します。
→リストの先頭または末尾へのアクセスは速く中央は遅いです。 - 値の重複は可能です。
- 順序があります。
- スレッドセーフではありません。
- 以下はJava8 API仕様のLinkedListクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/util/LinkedList.html
Listインターフェース
- LinkedListクラスはListインターフェースを実装しています。
- LinkedListクラスをインスタンス化する時、LinkedListクラス独自のメソッドを使用しない限り、通常Listインターフェイス型の変数に代入します。
- LinkedListクラスは、Listインターフェースを実装しているので、Listインターフェイスにあるメソッドを使用できます。
- 以下はJava8 API仕様のListインターフェースのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/util/List.html
要素を追加する (addメソッド)
要素を追加するサンプルです。
package test1;
import java.util.LinkedList;
import java.util.List;
public class Test1 {
public static void main(String[] args) {
List<String> colors = new LinkedList<>();
colors.add("赤");
colors.add("黄");
colors.add("青");
for (String a : colors) {
System.out.println(a);//赤 黄 青
}
colors.add(2,"オレンジ");
for (String a : colors) {
System.out.println(a);//赤 黄 オレンジ 青
}
}
}
8行目は、LinkedListクラスをインスタンス化してListインターフェイス型の変数に代入しています。
→ジェネリクス<>でオブジェクトの中身はStringであると宣言しています。
10-12行目は、addメソッドで要素を追加しています。
18行目は、位置を指定して要素を追加しています。
要素の位置を指定して要素を取得する (getメソッド)
要素の位置を指定して要素を取得するサンプルです。
package test1;
import java.util.LinkedList;
import java.util.List;
public class Test1 {
public static void main(String[] args) {
List<String> colors = new LinkedList<>();
colors.add("赤");
colors.add("黄");
colors.add("青");
System.out.println(colors.get(1)); //黄
}
}
13行目は、getメソッドで要素の位置を指定して要素を取得しています。
要素の位置は、赤=0、黄=1、青=2です。
要素の位置を指定して要素を置き換える (setメソッド)
要素の位置を指定して要素を置き換えるサンプルです。
package test1;
import java.util.LinkedList;
import java.util.List;
public class Test1 {
public static void main(String[] args) {
List<String> colors = new LinkedList<>();
colors.add("赤");
colors.add("黄");
colors.add("青");
colors.set(1, "紫");
System.out.println(colors); //[赤, 紫, 青]
}
}
13行目は、setメソッドで要素の位置を指定して要素を置き換えています。
要素の位置は、赤=0、黄=1、青=2です。
要素数を取得する (sizeメソッド)
要素数を取得するサンプルです。
package test1;
import java.util.LinkedList;
import java.util.List;
public class Test1 {
public static void main(String[] args) {
List<String> colors = new LinkedList<>();
colors.add("赤");
colors.add("黄");
colors.add("青");
System.out.println(colors.size()); //3
}
}
13行目は、sizeメソッドで要素数を取得しています。
要素を指定して要素の位置を取得する (indexOfメソッド)
要素を指定して要素の位置を取得するサンプルです。
package test1;
import java.util.LinkedList;
import java.util.List;
public class Test1 {
public static void main(String[] args) {
List<String> colors = new LinkedList<>();
colors.add("赤");
colors.add("黄");
colors.add("青");
System.out.println(colors.indexOf("黄")); //1
}
}
13行目は、indexOfメソッドで要素を指定して要素の位置を取得しています。
要素の位置は、赤=0、黄=1、青=2です。
指定の要素があるかを返す (containsメソッド)
指定の要素があるかを返すサンプルです。
package test1;
import java.util.LinkedList;
import java.util.List;
public class Test1 {
public static void main(String[] args) {
List<String> colors = new LinkedList<>();
colors.add("赤");
colors.add("黄");
colors.add("青");
System.out.println(colors.contains("青")); //true
}
}
13行目は、containsメソッドで指定の要素があるかを取得しています。
ある場合trueです。
中身が空かを返す (isEmptyメソッド)
中身が空かを返すサンプルです。
package test1;
import java.util.LinkedList;
import java.util.List;
public class Test1 {
public static void main(String[] args) {
List<String> colors = new LinkedList<>();
colors.add("赤");
colors.add("黄");
colors.add("青");
System.out.println(colors.isEmpty()); //false
}
}
13行目は、isEmptyメソッドで中身が空か取得しています。
空の場合trueです。
要素の位置を指定して要素を削除する (removeメソッド)
要素の位置を指定して要素を削除するサンプルです。
package test1;
import java.util.LinkedList;
import java.util.List;
public class Test1 {
public static void main(String[] args) {
List<String> colors = new LinkedList<>();
colors.add("赤");
colors.add("黄");
colors.add("青");
colors.remove(0);
System.out.println(colors); //[黄, 青]
}
}
13行目は、removeメソッドで要素の位置を指定して要素を削除しています。
要素の位置は、赤=0、黄=1、青=2です。
すべての要素を削除する (clearメソッド)
すべての要素を削除するサンプルです。
package test1;
import java.util.LinkedList;
import java.util.List;
public class Test1 {
public static void main(String[] args) {
List<String> colors = new LinkedList<>();
colors.add("赤");
colors.add("黄");
colors.add("青");
colors.clear();
System.out.println(colors); //[]
}
}
13行目は、clearメソッドですべての要素を削除しています。
リストを連結する (addAllメソッド)
リストを連結するサンプルです。
package test1;
import java.util.LinkedList;
import java.util.List;
public class Test1 {
public static void main(String[] args) {
List<String> a1 = new LinkedList<>();
a1.add("a");
a1.add("b");
List<String> b1 = new LinkedList<>();
b1.add("あ");
b1.add("い");
a1.addAll(b1);
for (String a : a1) {
System.out.println(a);//a b あ い
}
}
}
16行目は、addAllメソッドでリストを連結しています。
メソッドの引数/戻り値がリストの場合
メソッドの引数と戻り値がリストの場合のサンプルです。
package test1;
import java.util.LinkedList;
import java.util.List;
public class Test1 {
public static void main(String[] args) {
List<String> color = new LinkedList<>();
color.add("赤");
color.add("黄");
color.add("青");
List<String> b = getColor(color);
}
private static List<String> getColor(List<String> c1) {
for (String a : c1) {
System.out.println(a);//赤 黄 青
}
return c1;
}
}
12行目は、呼び出し元のメソッドです。引数(実引数)にリストを指定しています。戻り値もリストです。
15行目は、定義されたメソッドです。引数(仮引数)にリストがあります。戻り値もリストです。(以下の図を参照)

呼び出し元のメソッドの引数の変数名(color)と定義されたメソッドの引数の変数名(c1)は異なっていても使用できます。
要素をソートするサンプル(Collectionsクラス)
要素をソートするサンプルです。
package test1;
import java.util.LinkedList;
import java.util.List;
import java.util.Collections;
public class Test1 {
public static void main(String[] args) {
List<Integer> num1 = new LinkedList<>();
num1.add(211);
num1.add(35);
num1.add(6711);
Collections.sort(num1);
for (Integer a : num1) {
System.out.println(a);//35 211 6711
}
Collections.reverse(num1);
for (Integer a : num1) {
System.out.println(a);//6711 211 35
}
List<String> colors = new LinkedList<>();
colors.add("b");
colors.add("a");
colors.add("c");
Collections.sort(colors);
for (String a : colors) {
System.out.println(a);//a b c
}
Collections.reverse(colors);
for (String a : colors) {
System.out.println(a);//c b a
}
}
}
14行目は、sortメソッドで昇順にソートしています。
20行目は、reverseメソッドで並び順を逆にしています。降順でソートはしていません。
31行目は、文字列を昇順でソートしています。
37行目は、並び順を逆にしています。降順でソートはしていません。
要素を順番に処理する(forEachメソッド)
要素を順番に処理するサンプルです。forEachメソッドは、Java8で導入されました。
package test1;
import java.util.LinkedList;
import java.util.List;
public class Test1 {
public static void main(String[] args) {
List<String> colors = new LinkedList<>();
colors.add("赤");
colors.add("黄");
colors.add("青");
colors.forEach(a -> System.out.println(a));//赤 黄 青
colors.forEach(System.out::println);//赤 黄 青
}
}
13行目は、forEachメソッドでリストの各値を取得しています。変数a以降はラムダ式です。
Java ラムダ式のサンプル
14行目のSystem.out::printlnは、メソッド参照です。13行目と同じ意味です。
以下は、OracleのIterableインタフェースのforEachメソッドのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Iterable.html#forEach-java.util.function.Consumer-
関連の記事
Java ArrayListの使い方のサンプル
Java HashMapの使い方のサンプル
Java LinkedHashMapの使い方のサンプル
Java TreeMapの使い方のサンプル
Java HashSetの使い方のサンプル
Java 配列からリストを作成するサンプル(Arraysクラス)
Java 配列からリストを作成するサンプル(Collectionsクラス)
Java リストから配列を作成するサンプル(ArrayList)