集合相関データ構造とアルゴリズム

6785 ワード

キュー
import java.util.LinkedList;
import java.util.Queue;
/**
 *     :  
 * Queue  :java.util.Queue
 *      offer:       
 *      poll:       ,      offer   
 *                     ,          
 *      peek:      。(      !)
 *
 * LinkedList       
 */
public class QueueTest {
    public static void main(String[] args) {
        /**
         *     LinkedList  ,         !
         *    ,                ,
         *             
         */
        Queue queue = new LinkedList<>();
        queue.offer("A");
        queue.offer("B");
        queue.offer("C");
        System.out.println(queue);//[A, B, C]
        //      ,      
        System.out.println("  :"+queue.peek());//  :A
        String element = null;
        /*
        *           poll()  ,      null
        *           
        * */
        while ((element=queue.poll())!=null){
            System.out.println(element);
        }
        /**
         *               (FIFO)
         *        ,       。
         */
    }
}
スタックデータ構造
import java.util.Deque;
import java.util.LinkedList;
/**
 *      
 * Deque:
 *      pust:  ,       
 *      pop:  ,       
 *      peek:         ,    
 *            (FILO)
 *           
 *
 * LinkedList     Deque  。
 */
public class DequeTest {
    public static void main(String[] args) {
        /**
         *            
         */
        Deque deque = new LinkedList();
        for (int i = 0; i < 5; i++) {
            deque.push((char) ('A'+i));
        }
        System.out.println(deque);//[E, D, C, B, A]
        /*
        *   :
        *            pop        ,    peek  
        *            ,       null         
        *            ”  “。          ,    
        *       pop     “NoSuchElementException”
        */
        //    peek         
        while (deque.peek()!=null){
            System.out.println(deque.pop()+"");
        }
    }
}
比較アルゴリズム
/**
 *     
 *                      ,        
 *   Comparable  ,       
 */
public class ComparableTest implements Comparable {
    /*    */
    private int x;
    private int y;
    public ComparableTest(int x, int y) {
        this.x = x;
        this.y = y;
    }
    public int getX() {
        return x;
    }
    public void setX(int x) {
        this.x = x;
    }
    public int getY() {
        return y;
    }
    public void setY(int y) {
        this.y = y;
    }
    /**
     *     ,    Comparable    
     *                    
     * @param point         ,             
     * @return    
     *   0:      
     *   0:      
     *   0:       
     *     :
     *                   ,       
     */
    @Override
    public int compareTo(ComparableTest point) {
        //            
        int r = x*x+y*y;
        //            
        int other = point.x*point.x+point.y*point.y;
        /*
        *     :
        *       equals    true   ,
        *       compareTo       0,
        *             。
        */
        return r-other;
    }
    @Override
    public String toString() {
        return "ComparableTest{" +
                "x=" + x +
                ", y=" + y +
                '}';
    }
}
コレクション
  • CollectionとCollectionの違い?Collectionは集合の親インターフェースであり、Collectionは集合の道具類である.
  • Collectionクラスの集合のためのツールクラスは、集合動作のいくつかの方法を提供する.sort():この方法は集合中の元素を自然に並べ替えることができます.
  • Comprator比較器
  • は、インターフェースのクラスを実現するための抽象的な方法int compreto(E o 1,E o 2)を実現するためのインターフェースである.
  • この方法は0より大きい値を返します.o 1はo 2より大きいです.
  • この方法の戻り値は0以下である.o 1はo 2より小さい.
  • この方法の戻り値は0:o 1対o 2等しい.
  • コンパレータは、セット内の要素を比較するために使用される.Collectionは、ソートの積載方法を提供し、一つのコンパレータが入ってきて、集合を比較することをサポートする.
  • import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    /**
     *                   
     *           Comparable   !
     */
    public class CollectionsTest {
        public static void main(String[] args) {
            List list = new ArrayList();
            //      3   
            list.add(new ComparableTest(1,5));
            list.add(new ComparableTest(3,4));
            list.add(new ComparableTest(2,2));
            System.out.println(list);//[ComparableTest{x=1, y=5}, ComparableTest{x=3, y=4}, ComparableTest{x=2, y=2}]
            /**
             *                 
             *                 compareTo  
             *     
             */
            Collections.sort(list);
            System.out.println(list);//[ComparableTest{x=2, y=2}, ComparableTest{x=3, y=4}, ComparableTest{x=1, y=5}]
            /**
             *         ,             
             *   :  x               。
             *
             *                 :
             *  1、        Comparator  
             *  2、          compareTo(E o1,E o2)
             *  3、        
             *  4、  Collections     
             *      sort(Collection c,Comparator comparator)
             *          
             */
            //                   
            Collections.sort(list, new Comparator() {
                /**
                 *         :    x    
                 * @param o1
                 * @param o2
                 * @return   0:o1>o2,  0:o1
    コンパレータの練習をカスタマイズ
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    /**
     *       
     */
    public class ComparatorTest {
        public static void main(String[] args) {
            /**
             *          
             *      :“Tom”,“Jerry”,“Boss”,“Killer”,“ATom”,“Clark”
             *           
             *        :       
             */
            List list = new ArrayList();
            list.add("Tom");
            list.add("Jerry");
            list.add("Boss");
            list.add("Killer");
            list.add("ATom");
            list.add("Clark");
            System.out.println(list);//[Tom, Jerry, Boss, Killer, ATom, Clark]
            /**
             *   String            
             */
            Collections.sort(list);
            System.out.println(list);//[ATom, Boss, Clark, Jerry, Killer, Tom]
            Collections.sort(list, new Comparator() {
                /**
                 *           
                 * @param o1
                 * @param o2
                 * @return
                 */
                @Override
                public int compare(String o1, String o2) {
                    return o1.length()-o2.length();
                }
            });
            System.out.println(list);//[Tom, ATom, Boss, Clark, Jerry, Killer]
        }
    }