Collection

4419 ワード

Collectionインタフェース
CollectionインタフェースはListインタフェースとSetインタフェースを含む
1 listインタフェース:3つのインプリメンテーションクラスを含む(集合要素は繰り返すことができる)
  • ArrayListクラス:配列依存で実現され、ランダムアクセスの性能は良好であるが、大量の挿入、削除操作を行い、性能が悪い.操作後、後続要素が移動する必要があるためである.
  • LinkedListクラス:内部は二重チェーンテーブルに依存して実現されるため、挿入と削除の性能は良好であるが、ランダムアクセス要素の性能は悪い.
  • Vectorクラス:ArrayListと非常に類似しており、ArrayListとLinkdeListに対してスレッドが安全な
  • である.
                
    list = Collections.synchronizedList(list);
    

    2 Setインタフェース:1つのサブインタフェースと3つの実装クラスを含む(集合要素は重複できない)
  • HashSetクラス:重複する要素を格納することができず、ハッシュされた格納方法を採用しているため、順序がありません.ここでいう順序なしとは,要素挿入の順序が出力の順序と一致しないことを意味する.
  • public static void main(String[] args) {
            Set set = new HashSet();
            set.add(3);
            set.add(4);
            set.add(7);
            set.add(5);
            set.add(4);
            set.add(34);
            for(int  i : set)
                System.out.print(i+" ");
        }
        :
    34 3 4 5 7 
    
  • LinkedHashSetクラス:LinkedHashSetセットは、要素のhashCode値に基づいて要素の格納場所を決定しますが、チェーンテーブルを使用して要素の順序を維持します.これにより、エレメントは挿入順に保存するように見える、すなわち、LinkedHashSetは、その集合を巡回すると、エレメントの追加順に集合のエレメント
  • にアクセスする.
  • TreeSetクラス:SortSetインタフェースを実装(TreeSetの要素のソートには2つの方法がある).TreeSetがオブジェクトに入れるときにそのオブジェクトのクラスはComparableインタフェース(TreeSet無パラメータ構造)2を実現する.外部クラスによるComparatorインタフェース(TreeSetはパラメータ構造)
  • を実現する.
    //  Comparable  ===================
    class Person1 implements Comparable{
        private String name;
        private int age;
        private int score;
        public Person1(String name, int age, int score) {
            this.name = name;
            this.age = age;
            this.score = score;
        }
        public String getName() {
            return name;
        }
        public int getAge() {
            return age;
        }
        public int getScore() {
            return score;
        }
        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + age;
            result = prime * result + ((name == null) ? 0 : name.hashCode());
            result = prime * result + score;
            return result;
        }
        @Override
        public boolean equals(Object obj) {
            if(!(obj instanceof Person1))
                return false;
            Person1 p = (Person1) obj;
            if(p.age == this.age&&this.name==p.name&&this.score==p.score)
                return true;
            return false;
        }
        @Override
        public String toString() {
            return "Person1 [name=" + name + ", age=" + age + ", score=" + score + "]";
        }
        @Override
        public int compareTo(Person1 o) {
            // TODO Auto-generated method stub
            return o.getName().compareTo(this.getName());
        }
    }
    //  Comparator  ===============================
    class sortNameComparator implements Comparator{
    @Override
        public int compare(Person1 o1, Person1 o2) {
            // TODO Auto-generated method stub
            if(o1.getName().equals(o2.getName()))
                return 1;
            return o1.getName().compareTo(o2.getName());
        }
    }
    public class LearnComparator{
        public static void main(String [] args){
            System.out.println("     -------------");
            Set personSet1 = new TreeSet(new sortNameComparator());
            personSet1.add(new Person1("cat",13,30));
            personSet1.add(new Person1("dog",17,70));
            personSet1.add(new Person1("monky",15,90));
            personSet1.add(new Person1("cat",16,55));
            personSet1.add(new Person1("mouse",14,35));
            for(Person1 P:personSet1)
                System.out.println(P);
      //System.out.println("     -------------");
    //      TreeSet    
    //      Set personSet1 = new TreeSet();
    //      personSet1.add(new Person1("cat",13,30));
    //      personSet1.add(new Person1("dog",17,70));
    //      personSet1.add(new Person1("monky",15,90));
    //      personSet1.add(new Person1("cat",16,55));
    //      personSet1.add(new Person1("mouse",14,35));
    //      for(Person1 P:personSet1)
    //          System.out.println(P);
    //  }
    }
        :
         -------------
    Person1 [name=cat, age=13, score=30]
    Person1 [name=cat, age=16, score=55]
    Person1 [name=dog, age=17, score=70]
    Person1 [name=monky, age=15, score=90]
    Person1 [name=mouse, age=14, score=35]