javaset集合的值可以排序吗?
S:TreeSet会调用集合元素的compareTo(Objectobj)方法来比较元素之间的大小关系,然后将集合的元素按升序排列,这种就是自然排序.为什么集合元素有compareTo方法,因为集合元素对象实现了Comparable接口,该方法返回一个整数值,当一个对象调用该方法与另一个对象进行比较,例如(obj2)如果返回0,表示这两个对象相等,如果该方法返回一个正整数,表示obj1大于obj2如果该方法返回一个负整数,表示obj1小于obj2所以需要使用TreeSet集合进行自然排序,元素必须实现Comparabl:StringCharacterBooleanDateTimeBigDecimalBigInt:Tr
Java类中参数列表的个数与数据类型有哪些?
可变参数参数的个数不确定,可以是0个可以是多个,参数的数据类型必须相同可变参数必须要写在参数列表的最后操作可变参数,要通过使用数组的第6天可变参数参数的个数不确定,可以是0个可以是多个,参数的数据类型必须相同可变参数必须要写在参数列表的最后操作可变参数,要通过使用数组的数组排序冒泡排序选择排序二分法查找Arrays工具类面向对象n
一道java面试题,20亿数字的文本排序,如何取前100?
每行一个数字
自己写个最小(大)堆不就完了,c也可以用标准库里的优先队列。先找出前100大,然后再对前100大进行排序就是结果。。。。这题目简直不要太简单。。。。常见扩展就是1亿个url,如何找出出现最次数前100多的url。
有点笨的方法.:将20亿的数字分成2000(2万)个数据一段(或文件),对每组数组取1个(也可10个),直接汇总既可。也可多取再二次分组或三次分组。更多次就约准确。
我作为一个外行看来,这样的方案应该可以吧:假如要找出的是排大到小的前100.那么随机抓取20亿个中的100个,然后将这100个数排序,然后将剩下的数字中逐个跟100个中的最小的比较,如果比100个中最小的小,就淘汰这个,换下一个,如果那个数比100个中的最小的大,则将这个数置换掉那个最小的,100个再排序,(这次排序就很快了),接着再从剩余的数字中抓一个来比较,直至20亿个全部比较完,剩下的100个就是最大的前100
我赞成两个靠谱的回答
1
取100个数字排序,后面的数字依次和100个数字最小的比,最后留下100个最大的
2
根据字符串长度、小数、负数几个属性分类,可以直接排除部分较短的数字不转化为数字,然后做排序。这应该能省一些转换数字的时间吧?