码迷,mamicode.com
首页 > 其他好文 > 详细

Set( 基于平衡二叉树实现)

时间:2021-02-17 14:54:37      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:system   null   bool   二分搜索   class   highlight   rtti   lin   span   

基于平衡二叉树实现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

 

Set( 基于平衡二叉树实现)

标签:system   null   bool   二分搜索   class   highlight   rtti   lin   span   

原文地址:https://www.cnblogs.com/linlf03/p/14402813.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!