详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt159 comparator接口与Comparable接口的区别 1. Comparator 和 Comparable 相同的地方 他们都是java的一个接口, 并且是用来对自定义的class比较大小的, 什么是自定义class: 如 public class Person{ String name; int age }. 当我们有这么一个personList,里面包含了pe…
普通情况下在实现对对象元素的数组或集合进行排序的时候会用到Comparator和Comparable接口,通过在元素所在的类中实现这两个接口中的一个.然后对数组或集合调用Arrays.sort或者Collentions.sort方法就可以实现对数组或集合的排序.就sort方法里面的參数来说.实现了不同的接口则传递的參数也不尽同样.对于实现了Comparator接口的类来说.sort方法须要接受的參数不仅包含数组或集合.还要包含实现了该接口的类对象.而对实现了Comparable接口的类来说,參数…
1.接口从用户的角度(使用实现的代码)看问题. 2.接口由编译器强制的一个模块间协作的合约. 3.无成员变量. 4.成员函数只能声明不能实现,(jdk1.8中的default 方法可以有方法体). 接口和抽象类的区别: 1.抽象类可以有成员变量, 2.可以有部分实现: 3.抽象类不可以多继承,接口可以: 4.使用抽象类是使用继承的方式,但是只能单继承, 而接口是使用实现的方式实现的,并且可以多重实现: 5.从用户的角度看问题, 强调合约,强制协作的双方不能犯错.…
由于随着jdk版本的更新,在jdk1.8时,接口也增强了,所以我们分别来说明一下. (1)jdk1.8之前 在jdk1.8之前,接口里面只能定义抽象方法和常量:而抽象类比普通类有一点不同,就是抽象类里面可以定义抽象方法,同样在实现一个接口时,普通类需要实现接口中的所有抽象方法,而抽象类不必完全实现. 接口与抽象类最大的不同在于类只支持单继承,而接口支持多实现:即一个类只能继承一个类,但是一个类可以实现多个接口,在一个类中既要继承类又要实现接口时,需要将继承写在前面. 一般来说,在日常开发中需要接…
一.定制排序:java.util.Comparator 接口 强行对某个对象 collection 进行整体排序 的比较函数.可以将 Comparator 传递给 sort 方法(如 Collections.sort 或 Arrays.sort),从而允许在排序顺序上实现精确控制.还可以使用 Comparator 来控制某些数据结构(如有序 set或有序映射)的顺序,或者为那些没有自然顺序的对象 collection 提供排序. 当元素的类型没有实现java.lang.Comparable接口而…
java面试中经常被问到list常用的类以及内部实现机制,平时开发也经常用到list集合类,因此做一个源码级别的分析和比较之间的差异. 首先看一下List接口的的继承关系: list接口继承Collection接口,Collection接口继承Iterable接口. Iterable接口定义的方法: public interface Iterable<T> { /** * Returns an iterator over a set of elements of type T. * * @re…
java中的set接口有如下的特点: 不允许出现重复元素: 集合中的元素位置无顺序: 有且只有一个值为null的元素. 因为java中的set接口模仿了数学上的set抽象,所以,对应的数学上set的特性为: 互异性:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次. 无序性:一个集合中,每个元素的地位都是相同的,元素之间是无序的.集合上可以定义序关系,定义了序关系后,元素之间就可以按照序关系排序.但就集合本身的特性而言,元素之间没有必然的序. 空集的性质:空集是一切集合的子集 S…
Java 中类似 <T extends Comparable<? super T>> 这样的类型参数 (Type Parameter) 在 JDK 中或工具类方法中经常能看到.比如 java.util.Collections 类中的这个方法声明: public static <T extends Comparable<? super T>> void sort(List<T> list) 我知道 extends 和 super 这样的关键字在泛型…
JAVA中extends 与implements有啥区别?1. 在类的声明中,通过关键字extends来创建一个类的子类.一个类通过关键字implements声明自己使用一个或者多个接口.extends 是继承某个类, 继承之后可以使用父类的方法, 也可以重写父类的方法; implements 是实现多个接口, 接口的方法一般为空的, 必须重写才能使用2.extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,JAVA中不支持多重继承,但是可以用接口…
JAVA中限制接口流量可以通过Guava的RateLimiter类或者JDK自带的Semaphore类来实现,两者有点类似,但是也有区别,要根据实际情况使用.简单来说, RateLimiter类是控制以一定的速率访问接口. Semaphore类是控制允许同时并发访问接口的数量. 一.RateLimiter类 RateLimiter翻译过来是速率限制器,使用的是一种叫令牌桶的算法,当线程拿到桶中的令牌时,才可以执行.通过设置每秒生成的令牌数来控制速率.使用例子如下: public class Te…