Javaトレーニング-集合


  • 集合フレームワークアーキテクチャ
  • 集合フレームワークアーキテクチャ図解釈:虚点ボックス:代表インタフェース、破線ボックス:代表抽象インタフェース、実線ボックス:代表実現インタフェースのクラス
  • Collectionとcollectionsの違い:Collectionは集合クラスの上位インタフェースであり、継承と彼のインタフェースは主にSetとListがある.Collectionsは、さまざまなコレクションの検索、ソート、スレッドのセキュリティ化などの操作を実現する一連の静的メソッドを提供するコレクションクラスのヘルプクラスです.
  • Map共通サブクラスHashtable:ハッシュテーブル、同期化、nullキーとnull値HashMapを許可しない:ハッシュテーブル、非同期化、nullキーとnull値TreeMap:ツリー、非同期化、Mapセット内のキーのソート
  • Collectionインタフェース共通サブクラスSetおよびList:Set:要素の保存順序は記録されず、重複データリスト:要素の保存順序は許可されず、重複データが許可される.
  • ArrayList,Vector,LinkedListの記憶性能と特性ArrayList,Vectorは、実際に記憶されているデータよりも多くのデータを格納する配列方式を使用しており、いずれもシーケンス番号で直接要素をインデックスすることができるが、挿入要素は配列要素の移動などのメモリ操作にかかわるため、インデックスデータが速く、挿入データが遅いVectorはsynchronizedメソッド(スレッドセキュリティ)を使用しているため、通常性能がArrayListより劣るが、LinkedListは双方向チェーンテーブルを使用して記憶されており、シーケンス番号インデックスデータでは順方向または後方向に遍歴する必要があるが、データを挿入する際には本項の前後を記録するだけでよいため、挿入速度が速い.
  • ArrayList:配列実装を用いて,配列中の定長から長化,タイプ多様化の問題を解決した.Iterator:反復インタフェースメソッド:hasNext()反復器に値があるかどうかを判断し、next()は値を取り、次の単一
  • にポインタを移動する.
  • まとめ:スタック、キューなどの操作に関わる場合は、リストを使用することを考慮すべきであり、要素の迅速な挿入、削除が必要な場合はLinkedListを使用すべきであり、要素への迅速なランダムなアクセスが必要な場合はArrayListを使用すべきである.プログラムが単一スレッド環境にある場合、または1つのスレッドでのみアクセスされる場合、非同期クラスを考慮すると効率が高く、複数のスレッドが1つのクラスを同時に操作できる場合は、同期クラスを使用する必要があります.ハッシュ・テーブルの操作に特に注意し、keyのオブジェクトとしてequalsメソッドとhashCodeメソッドを正しく複写します.実際のタイプではなくインタフェースをできるだけ返します.例えば、ArrayListではなくListを返します.これにより、後でArrayListをLinkedListに変更する必要がある場合、クライアントコードは変更されません.これが抽象プログラミングです.
  • ArrayListの値をとる:
  • public static void test1(){
            ArrayList aList=new ArrayList();
            aList.add(5);
            aList.add(2);
            aList.add(0);
            aList.add(" ");
            aList.add('a');
            //for    
            for (int i = 0; i  
      

    10. Map :Key Set ,value collection , Set

    public static void putElements(){
            hashMap.put("huang", "ming");
            hashMap.put("chao", "sheng");
            hashMap.put("shi", "tian");
            int size=hashMap.size();
            System.out.println("size="+size);
        }
        //key set  
        public static void getKey(){
            Set keyset=hashMap.keySet();
            Iterator it=keyset.iterator();
            while(it.hasNext()){
                Object key=it.next();
                System.out.println("keys="+key);
            }
        }
        //value collection  
        public static void getValues(){
            Collection coll=hashMap.values();
            Iterator it=coll.iterator();
            for (Iterator iterator = coll.iterator(); iterator.hasNext();) {
                Object value = iterator.next();
                System.out.println("values="+value);
            }
        }
        //key-value entrySet  
        public static void getKV(){
            //       for    
            for(Object obj:hashMap.entrySet()){
                Entry entry=(Entry) obj;
                Object key=entry.getKey();
                Object value=entry.getValue();
                System.out.println("key="+key+";value="+value);
            }
             
            //      Key  Value
            for(Object obj:hashMap.keySet()){
                Object key=obj;
                Object value=hashMap.get(obj);
                System.out.println("key="+key+";value="+value);
            }
             
            //         Entry  key value
            Set entrySet=hashMap.entrySet();
            Iterator it=entrySet.iterator();
            while(it.hasNext()){
                Entry entry=(Entry) it.next();
                Object key=entry.getKey();
                Object value=entry.getValue();
                System.out.println("key="+key+";value="+value);
            }
        }

    11.Stackクラス:
    //    
        public static void test(){
            Stack stack=new Stack();
            stack.add("apple");
            stack.add("banana");
            stack.add(123);
            stack.add(new Date());
             
            Iterator it=stack.iterator();
            while(it.hasNext()){
                Object obj=it.next();
                System.out.println(obj);
            }
            //peek     ,        
            Object peekObj=stack.peek();
            System.out.println("peekObj:"+peekObj);
            System.out.println("peek after:"+stack.size());
            //pop          ,      
            Object popObj=stack.pop();
            System.out.println("popObj:"+popObj);
            System.out.println("pop after:"+stack.size());
             
        }

    12. された の を します.
    public static void countChar(){
            Scanner sc=new Scanner(System.in);
            System.out.println("         :");
            String s=sc.next();
            try {
                //  GBK     ,   UTF-8      。
                s = new String(s.getBytes("GBK"), "utf-8");
                System.out.println(s);
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            char[] c=s.toCharArray();
            Map map=new TreeMap();
            for (int i = 0; i