zoukankan      html  css  js  c++  java
  • Set( 基于平衡二叉树实现)

    基于平衡二叉树实现Set

    public class AVLTreeSet<E extends  Comparable<E>> implements ISet<E> {
    
        private  AVLTree<E,Object> avl;
    
        public AVLTreeSet(){
            avl = new AVLTree<E, Object>();
        }
    
        public void add(E e) {
            avl.add(e,null);
        }
    
        public void remove(E e) {
            avl.remove(e);
        }
    
        public boolean contains(E e) {
            return avl.contains(e);
        }
    
        public int getSize() {
            return avl.getSize();
        }
    
        public boolean isEmpty() {
            return avl.isEmpty();
        }
    }
    

      

    多种Set对比

     public static void main(String[] args) {
    
            BinarySearchTreeSet<String> set2 = new BinarySearchTreeSet<String>();
            double time2 =  testSet(set2);
            System.out.println("二分搜索树Set花费" + time2);
    
            AVLTreeSet<String> avlSet = new AVLTreeSet<String>();
            double time3 =  testSet(avlSet);
            System.out.println("平衡二叉树Set花费" + time3);
    
            LinkedListSet<String> set1 = new LinkedListSet<String>();
            double time1 =  testSet(set1);
            System.out.println("链表Set花费" + time1);
    
    
        }
    

      testSet方法

    private static  double testSet(ISet<String> set){
            long startTime = System.nanoTime();
            String[] arr = {"张三", "李四","王五", "赵六","张三丰","李思明","王老五","赵明"};
            for(int i = 0; i < 30000; i++){
                for(String str : arr){
                    set.add(str +i);
                }
            }
            long endTme = System.nanoTime();
            return  (endTme - startTime) / 1000000000.0;
        }
    

      

    输出结果:

    二分搜索树Set花费0.165575024
    平衡二叉树Set花费0.127797361
    链表Set花费花费249.458582022

    作者:Work Hard Work Smart
    出处:http://www.cnblogs.com/linlf03/
    欢迎任何形式的转载,未经作者同意,请保留此段声明!

  • 相关阅读:
    TCP协议
    数据包以及数据传输
    网络模型
    Executors常见的线程池创建以及其问题
    线程池
    阻塞队列和死锁
    ConcurrentHashMap
    ReentrantLock,公平性锁和非公平性锁
    Lock
    jQuery如何获取table中每一行的数据并发送给后端?
  • 原文地址:https://www.cnblogs.com/linlf03/p/14402813.html
Copyright © 2011-2022 走看看