【Java】コレクション ~ List 編~

List

 * C# の List と同じ(ただ、C#の List はクラスだが、Java の List はインターフェース)
 * list.get(0) で取得(C# の list[0] と同じ)
 * list.size() (C# の list.length と同じ)

■ 空のリストを返す

Collections.emptyList();
を使用する

参考文献

http://blog.sgnet.co.jp/2015/06/java.html
より抜粋

メソッドからコレクションを返す場合、無効な状態を表すのにnullを返すのではなく、
要素数0のコレクションを返すのが良い作法とされている。

■ 文字列 => List に変換するには

Arrays.asList(【文字列】(, 【文字列】, ...)) が便利
// 文字列 => List
String value = "TestValue";
List<String> values = Arrays.asList(value);

List<String> sampleValues = Arrays.asList("TestValue1", "TestValue2", "TestValue3"); // 複数も可能

■ Listの初期化

// パターン1-1
List<String> list1 = new ArrayList<String>();
list1.add("a");
list1.add("b");
list1.add("c");

// パターン1-2
List<String> list1_2 = new ArrayList<String>(Arrays.asList("g", "h", "i"));

// パターン2-1 : 匿名内部クラスを利用した方法(★以下「注意:匿名内部クラスを利用した方法について」を参照★)
List<String> list2_1 = new ArrayList<String>() {
    {
        // イニシャライザー
        add("d");
        add("e");
        add("f");
    }
};

// パターン2-2 : Arrays.asList()を利用
List<String> list2_2 = Arrays.asList("g", "h", "i");

注意:匿名内部クラスを利用した方法について

 * 『パターン2-1 : 匿名内部クラスを利用した方法』と『パターン1』/『パターン2』は
  上記の例だけ言えば、得られる結果は同じであるが、インスタンス生成で違いがある。

 => 詳細は以下の関連記事を参照のこと
https://blogs.yahoo.co.jp/dk521123/37174760.html

参考文献

https://potter0517.wordpress.com/2012/12/04/java-1/

■ 読み取り専用のリストを作成する

 * unmodifiableList()を使用する
http://www.techscore.com/tech/Java/JavaSE/Utility/5-2/
http://www.02.246.ne.jp/~torutk/javahow2/collection.html

■ リストの定数化

* finalを付けても要素の追加や変更はできてしまうので、Collections.unmodifiableList()を付ける
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

private static final List<String> PRODUCT_CODES;

static {
   PRODUCT_CODES = Collections.unmodifiableList(new ArrayList<String>() {
      private static final long serialVersionUID = -5026360498609632073L;
      {
         add("X0001");
         add("X0002");
         add("X0003");
      }
   });
}
http://sakuramochi702.hatenablog.com/entry/2013/10/08/114958

■ リストをある範囲で抜き出す

// fromIndex (これを含む) から toIndex (これを含まない) の範囲の部分を抜き出す
List<Integer> restInputs = inputs.subList(fromIndex, toIndex);

■ List <=> 配列に変換するには

 * 以下の関連記事を参照のこと
https://blogs.yahoo.co.jp/dk521123/37174513.html

ArrayList <=> Set に変換するには

 * 以下の関連記事を参照のこと
http://blogs.yahoo.co.jp/dk521123/33006348.html

■ カスタムソート

 * 以下の関連記事を参照のこと
https://blogs.yahoo.co.jp/dk521123/37174524.html


関連記事

配列 に関するあれこれ

http://blogs.yahoo.co.jp/dk521123/34123527.html

コレクション ~ List 編~

http://blogs.yahoo.co.jp/dk521123/32156111.html

コレクション ~ List編 / List <=> 配列に変換するには ~

https://blogs.yahoo.co.jp/dk521123/37174513.html

コレクション ~ List編 / 独自のソートをする実装を考える ~

https://blogs.yahoo.co.jp/dk521123/37174524.html

コレクション ~ Map編~

http://blogs.yahoo.co.jp/dk521123/33002154.html

コレクション ~ Set 編~

http://blogs.yahoo.co.jp/dk521123/33006348.html

コレクション ~ Queue 編~

http://blogs.yahoo.co.jp/dk521123/33006366.html

コレクション ~ Deque 編~

http://blogs.yahoo.co.jp/dk521123/36352193.html

コレクション ~ マルチスレッド 編~

http://blogs.yahoo.co.jp/dk521123/34006868.html

ラムダ式 ~入門編~

http://blogs.yahoo.co.jp/dk521123/34188394.html

ラムダ式 ~Stream API編~

http://blogs.yahoo.co.jp/dk521123/34192426.html

List操作時にエラー「UnsupportedOperationException」が発生

http://blogs.yahoo.co.jp/dk521123/33322677.html