集合フレーム-ツールクラス_Collections

18188 ワード

Collections:コレクションフレームワークのツールクラスです.中の方法はすべて静的です.
コンパレータ:
import java.util.Comparator;



public class ComparatorByLength implements Comparator<String> {



    @Override

    public int compare(String o1, String o2) {



        int temp = o1.length() - o2.length();

        

        return temp==0?o1.compareTo(o2): temp;

    }



}

 
 
sort()およびswap()メソッド:
import java.util.ArrayList;

import java.util.Collections;

import java.util.List;



public class CollectionsDemo {

    public static void main(String[] args) {

        demo();

    }

    public static void demo(){

        List<String> list = new ArrayList<String>();

        list.add("abcde");

        list.add("cba");

        list.add("aa");

        list.add("zzz");

        list.add("cba");

        list.add("nbaa");

        System.out.println(list);

        

        // list 。

        

        //Collections.sort(list);// Collections 

        

        mySort(list);// 

        

        //mySort(list,new ComparatorByLength());// 

        

        //Collections.sort(list,new ComparatorByLength());

        System.out.println(list);

    }

    

    public static <T extends Comparable<? super T>> void mySort(List<T> list){

        for (int i = 0; i < list.size()-1; i++) {

            

            for (int j = i+1; j < list.size(); j++) {

                

                if(list.get(i).compareTo(list.get(j))>0){

                    

                    /*T temp = list.get(i);

                    list.set(i, list.get(j));

                    list.set(j, temp);*/

                    

                    Collections.swap(list, i, j);

                }

            }

        }

    }

}

 
binarySearch():半角検索
import java.util.ArrayList;

import java.util.Collections;

import java.util.List;



public class CollectionsDemo {

    public static void main(String[] args) {

        demo();

    }

    public static void demo(){

        List<String> list = new ArrayList<String>();

        

        list.add("abcde");

        list.add("cba");

        list.add("aa");

        list.add("zzz");

        list.add("cba");

        list.add("nbaa");

        

        System.out.println(list);

        

        Collections.sort(list);

        

        // , , 

        int index = Collections.binarySearch(list, "cba");        

        System.out.println("index="+index);

        

    }

    

}

 
 
最大値を取得:
import java.util.ArrayList;

import java.util.Collections;

import java.util.Comparator;

import java.util.List;



public class CollectionsDemo {

    public static void main(String[] args) {

        demo();

    }

    public static void demo(){

        List<String> list = new ArrayList<String>();

        

        list.add("abcde");

        list.add("cba");

        list.add("aa");

        list.add("zzz");

        list.add("cba");

        list.add("nbaa");

        System.out.println(list);

        

        

        //

        String max = Collections.max(list,new ComparatorByLength());//

        System.out.println("max="+max);

    }

}

 
 
逆順序
import java.util.Collections;

import java.util.Comparator;

import java.util.TreeSet;



public class CollectionsDemo {

    public static void main(String[] args) {

        demo();

    }

    public static void demo() {

        // 

        /*TreeSet<String> ts = new TreeSet<String>(new Comparator<String>(){



            @Override

            public int compare(String o1, String o2) {

                

                int temp = o2.compareTo(o1);

                return temp;

            }

            

        });*/

        

        // ( Collections )

        TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder());    

        //TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder(new ComparatorByLength()));    

        

        ts.add("abc");

        ts.add("hahaha");

        ts.add("zzz");

        ts.add("aa");

        ts.add("cba");

        

        System.out.println(ts);

        

    }

}

 
 
 
置換:
import java.util.ArrayList;

import java.util.Collections;

import java.util.List;



public class CollectionsDemo {

    public static void main(String[] args) {

        demo();

    }

    public static void demo() {

        List<String> list = new ArrayList<String>();

        

        list.add("abcde");

        list.add("cba");

        list.add("zhangsan");

        list.add("zhaoliu");

        list.add("xiaoqiang");

        

        System.out.println(list);

        

        Collections.replaceAll(list, "cba", "nba"); // set(indexOf("cba"),"nba");

        

        System.out.println(list);

    }

}

 
fill()メソッドコレクション内の要素をアンバーに置き換えて指定した要素に置き換えます
import java.util.ArrayList;

import java.util.Collections;

import java.util.List;



public class CollectionsDemo {

    public static void main(String[] args) {

        demo();

    }

    public static void demo() {

        List<String> list = new ArrayList<String>();

        

        list.add("abcde");

        list.add("cba");

        list.add("zhangsan");

        list.add("zhaoliu");

        list.add("xiaoqiang");

        

        System.out.println(list);

        Collections.fill(list, "cc");

        System.out.println(list);

    }

}

 
import java.util.ArrayList;

import java.util.Collections;

import java.util.List;



public class CollectionsDemo {

    public static void main(String[] args) {

        demo();

    }

    public static void demo() {

        List<String> list = new ArrayList<String>();

        

        list.add("abcde");

        list.add("cba");

        list.add("zhangsan");

        list.add("zhaoliu");

        list.add("xiaoqiang");

        

        System.out.println(list);

        Collections.shuffle(list);// 

        System.out.println(list);

    }

}

 
 
 
非同期集合を同期集合に変換する原理:
class MyCollections{



    public static  List synList(List list){

        

        return new MyList(list);

    }



    private class MyList implements List{

    

        private List list;

        

        private static final Object lock = new Object();

        MyList(List list){    

            this.list = list;    

        }

        

        public boolean add(Object obj){

            synchronized(lock){

                return list.add(obj);

            }

        }

        

        public boolean remove(Object obj){

            synchronized(lock){

                return list.remove(obj);

            }

        }



     }

}
List list = new ArrayList();//



list = MyCollections.synList(list);// list.