List の一部を切り出す

C:\DATA\Java2\01Dos>java SubList
2
3
4
--------------------
0
1
2
3
--------------------
3
4
 -- Press any key to exit (Input "c" to continue) --

ArrayList 及び、配列の一部を切り出します。

前田稔の超初心者のプログラム入門

プログラムの作成

  1. メモ帳などでタイプして SubList.java の名前で保存して下さい。
    // 配列の切り出し    前田 稔
    import java.util.*;
    class  SubList
    {   public static void main(String[] args)
        {   List<Integer>  list = new ArrayList<Integer>();
            List<Integer>  sub;
    
            for(int i=0; i<7; i++)  list.add(i);
            sub= list.subList(2,5);
            for(int i=0; i<sub.size(); i++)
                System.out.println(sub.get(i));
            System.out.println("--------------------");
    
            int[] tbl = new int[list.size()];
            for(int i=0; i<list.size(); i++)  tbl[i] = list.get(i);
            int[] st = Arrays.copyOf(tbl, 4);
            for(int i=0; i<st.length; i++)    System.out.println(st[i]);
            System.out.println("--------------------");
    
            int[] st2 = Arrays.copyOfRange(tbl, 3, 5);
            for(int i=0; i<st2.length; i++)    System.out.println(st2[i]);
        }
    }
    
  2. java のソースファイルをコンパイルして class オブジェクトを実行して下さい。
    ページ先頭の画面が表示されたら完成です。

プログラムの説明

  1. ArrayList に <Integer> を設定して、一部を切り出して新しい ArrayList を作成します。
    list = new ArrayList(); で初期化して、list.add(i); で登録します。
        {   List<Integer>  list = new ArrayList<Integer>();
            for(int i=0; i<7; i++)  list.add(i);
        
  2. list.subList(2,5); で 2,3,4 番目を切り出して新しい sub を作成します。
            List<Integer>  sub;
            sub= list.subList(2,5);
        
  3. ArrayList を配列に変換してみました。
    ArrayList に登録されているのは <Integer>(Object) で受け取り側は int[](基本属性)なので直接変換することは出来ません。
    new int[list.size()]; でサイズを設定して、一個ずつコピーします。
            int[] tbl = new int[list.size()];
            for(int i=0; i<list.size(); i++)  tbl[i] = list.get(i);
        
  4. 配列から先頭の4個を切り出して新しい st[] を作成します。
            int[] st = Arrays.copyOf(tbl, 4);
        
  5. 今度は配列から 3,4 番目を切り出して新しい st2[] を作成します。
            int[] st2 = Arrays.copyOfRange(tbl, 3, 5);
        

超初心者のプログラム入門(Java2)