卢雨杰10.09

学习内容:

collections类

collections类是java提供的一个集合操作工具类,它包含了大量的静态方法,用于实现集合对元素的排序,查找和替换等操作

​ collection和collections的区别:

​ 前者是集合的操作类,后者是集合接口

compare:类的自然排序

compareTo:自然比较方法

compareTo:的语法:

int compareTo(Object obj);

参数obj即要比较的对象,

返回值:负整数,零或正整数;根据此对象是小于等于还是大于指定对象返回不同的值

例子

String s1 = "abc";
String s2 = "abcd";
String s3 = "abcdfg";
String s4 = "1bcdfg";
String s5 = "cdfg";
System.out.println( s1.compareTo(s2) ); // -1 (前面相等,s1字符串长度小1)
System.out.println( s1.compareTo(s3) ); // -3 (前面相等,s1字符串长度小3)
System.out.println( s1.compareTo(s4) ); // 48 ("a"的ASCII码是97,"1"的的ASCII码是49,所以返回48)
System.out.println( s1.compareTo(s5) ); // -2 ("a"的ASCII码是97,"c"的ASCII码是99,所以返回-2)

Compareator接口实现比较器排序

​ 使用compareator接口需要重写int compare()方法

语法:

​ int compare(Object obj1,Object obj2);

参数obj1 是要比较的第一个对象

参数obj2 是要比较的第二个对象

返回值:负整数,零或正整数;根据此对象是小于等于还是大于指定对象返回不同的值

泛型(参数化类型)

​ 泛型是jdk1.5的新特性

泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。

泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。

语法格式:

类型对象 = new 类型

<>是泛型的特性

E表示某种数据类型,也可以用其他字母表示,如T,在实际使用泛型时,需要使用明确的类型替换掉E

上限:?extends E:可以接收E类型或者E的子类型对象。

下限:?super E:可以接收E类型或者E的父类型对象。

上限什么时候用:往集合中添加元素时,既可以添加E类型对象,又可以添加E的子类型对象。为什么?因为取的时候,E类型既可以接收E类对象,又可以接收E的子类型对象。

下限什么时候用:当从集合中获取元素进行操作的时候,可以用当前元素的类型接收,也可以用当前元素的父类型接收

*泛型的细节:*

1)、泛型到底代表什么类型取决于调用者传入的类型,如果没传,默认是Object类型;

2)、使用带泛型的类创建对象时,等式两边指定的泛型必须一致;

原因:编译器检查对象调用方法时只看变量,然而程序运行期间调用方法时就要考虑对象具体类型了;

3)、等式两边可以在任意一边使用泛型,在另一边不使用(考虑向后兼容);

学习心得:

​ 在看源码时速度可以稍微慢一点,理解代码需要亿点点时间

标签

评论


© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1