第11回Java勉強会

概要

コレクション

  • 下-P.260

詳細

コレクション

コレクションとはたくさんのインスタンスを管理する目的を持ったクラスやインターフェースの総称です。
これらのインターフェースやクラスの枠組みをコレクションフレームワークと言います。
コレクションフレームワークについてのインターフェースやクラスについては以下のURLで確認できます。
http://java.sun.com/javase/ja/6/docs/ja/api/index.html
この中には様々なクラスやインターフェースが存在しますが、今回はよく使用されるものについて紹介します。

  • ArrayList?
    Listインターフェースを実装したクラスです。
    配列の要素数を変更できるようにしたものです。
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    
    public class ListTest {
    
        public static void main(String[] args) {
            
            // ArrayListのインスタンスを生成
            List list = new ArrayList();
            
            // ArrayListに要素を追加
            list.add("2hoge");
            list.add("3hoge");
            list.add("1hoge");
            
            // Listの要素をソートします
            Collections.sort(list);
            
            System.out.println("ArrayListをソートしました");
            
            // size()で要素の数を取得できるので配列と同じようにループできます
            // sort結果を表示
            for (int i = 0; i < list.size(); i++) {
                // get()の戻り値はObject型なのでキャストしなければStringに代入できません
                // String str = list.get(i);
                String str = (String) list.get(i);
                System.out.println(str);
            }
            
            // Listの最後の要素を削除します
            System.out.println(list.size() + "番目の要素を削除します");
            list.remove(list.size() - 1);
            
            // Listを配列に変換することもできます
            String[] array = (String[])list.toArray(new String[0]);
            
            for (int i = 0; i < array.length; i++) {
                System.out.println(array[i]);
            }
            
        }
    }
     
  • HashMap?
    Mapインターフェースを実装したクラスです。
    配列では「インデックス(要素番号)」と「値(インスタンス)」が対応づいていますが、
    Mapでは「キー」と「値(インスタンス)」というペアで対応関係ができています。
    public class Person {
        
        /** 年齢 */
        private int age;
        
        /** 名前 */
        private String name;
        
        /**
         * コンストラクタです
         * 年齢と名前をセットします
         */
        public Person(int age, String name) {
            this.age = age;
            this.name = name;
        }
        
        public void showProfile() {
            System.out.println("私は" + this.name + "" + this.age + "歳です。");
        }
        
    }
    import java.util.HashMap;
    import java.util.Map;
    
     
    public class MapTest {
    
        public static void main(String[] args) {
            
            // マップに格納するための要素を作成します
            Person p1 = new Person(15, "Taro");
            Person p2 = new Person(15, "Jiro");
            Person p3 = new Person(15, "Saburo");
            
            // マップをインスタンス化
            Map map = new HashMap();
            
            // マップにキーをしていしてインスタンスを格納しています
            map.put("key1", p1);
            map.put("key2", p2);
            map.put("key3", p3);
            
            // 試しにひとつ要素を取り出してみます
            Person per1 = (Person)map.get("key1");
            per1.showProfile();
    
        }
    
    }
  • HashSet?
    Setインターフェースを実装したクラスです。
    要素の集合を表すクラスです。
    import java.util.HashSet;
    import java.util.Set;
    
     
    public class SetTest {
    
        public static void main(String[] args) {
            
            // Setを生成します
            Set set = new HashSet();
            
            // Setに要素を追加します
            set.add("hogehoge");
            set.add("test1");
            set.add("test2");
            // この要素は重複するので新たに"hogehoge"が追加されるわけではありません
            set.add("hogehoge");
            
            String[] array = (String[])set.toArray(new String[0]);
            
            for (int i = 0; i < array.length; i++) {
                System.out.println(array[i]);
            }
    
        }
    
    }
  • Iterator
    Iterator(イテレータ)とは日本語でいうと反復子という意味になります。
    このイテレータを使用して、コレクションの各要素を参照することができます。
    import java.util.ArrayList;
    import java.util.Iterator;
    
     
    public class IteratorTest {
    
        public static void main(String[] args) {
    
            // コレクションに格納するための要素を生成しています
            Person p1 = new Person(30 , "Takahashi");
            Person p2 = new Person(32 , "Tani");
            Person p3 = new Person(34 , "Ogasawara");
            Person p4 = new Person(35 , "Lee");
            Person p5 = new Person(29 , "Abe");
            
            // ArrayListのインスタンスを生成
            List list = new ArrayList();
            
            // ArrayListに要素を追加
            list.add(p1);
            list.add(p2);
            list.add(p3);
            list.add(p4);
            list.add(p5);
            
            // list.iterator()でイテレータを取得しています
            // ite.hasNext()では次の要素があるかを確認します
            for (Iterator ite = list.iterator(); ite.hasNext();) {
                
                // ite.next()で要素を取得しています
                // 要素はPersonなのでキャストします
                Person p = (Person)ite.next();
                p.showProfile();
                
            }
            
            //whileループで回すと以下のようになります。(結果は同じです)
    //        Iterator ite = list.iterator();
    //        
    //        while (ite.hasNext()) {
    //            Person p = (Person)ite.next();
    //            p.showProfile();
    //        }
            
        }
    
    }
     

Java勉強会カリキュラムに戻る


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-12-20 (土) 14:12:42 (626d)