当前位置:  开发笔记 > 编程语言 > 正文

从主要包含空值的可比较数据列表中获取最小值和最大值的最佳方法是什么?

如何解决《从主要包含空值的可比较数据列表中获取最小值和最大值的最佳方法是什么?》经验,为你挑选了1个好方法。

我在考虑这样的事情:

public static > T minOf(T...ts){        
    SortedSet set = new TreeSet(Arrays.asList(ts));
    return set.first();
}

public static > T maxOf(T...ts){
    SortedSet set = new TreeSet(Arrays.asList(ts));
    return set.last();
}

但是不安全,这也是我想要的.

你知道解决这个问题的更好方法吗?

编辑:

评论后我也试过min():

public static > T minOf(T...ts){        
    return Collections.min(Arrays.asList(ts), new Comparator(){

        public int compare(T o1, T o2) {
            if(o1!=null && o2!=null){
                return o1.compareTo(o2);
            }else if(o1!=null){
                return 1;
            }else{
                return -1;  
            }
        }});
}

你对那个怎么想的?



1> Pyrolistical..:

Collections.max出了什么问题?

你为什么关心无效安全?您确定要允许空值出现在您的收藏中吗?


@ Yetti99排序会变慢,因为它是'O(n log n)`和'max` +`min`是'O(2n)`.更好的是做一个循环并更新其中的最大值和最小值.并且OP似乎不需要在单个功能中.
推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有