主要内容:
Java学习基础笔记 PDF 下载1、泛型使得类型成为参数。
2、通过使用泛型可以编写具有通用算法的程序,并且在编译时进行了更严格的类型检测,不需要进行强制类型转换。
3、可以创建泛型类、泛型接口和泛型方法。
4、声明一个泛型类:
注意:若 Holder2 里包含某 static 方法,该静态方法不能使用泛型类中声明的类型参数。
5、在 HolderTest 类的 main()方法中使用 Holder2 类。
6. 如果使用泛型方法可以取代泛型类,应使用泛型方法。泛型方法的定义和普通方法定义不同的地方在于,需要在修饰符和返回类型之间加一个泛型类型参数的声明。在类 ShapeGenerator 中创建一个泛型方法:static 方法需要使用泛型能力,必须使用泛型方法。
7、调用泛型方法和调用普通方法是一样的。方法中的泛型参数无须显式传入实际类型参数,编译器会根据传入的实参类型自动推断类型参数。
8. 上界通配符 extends MyClass>代表类型应该是 MyClass 或它的子类。
9. 下界通配符 super MyClass>代表类型应该是 MyClass 或它的父类。
10. 泛型通过在编译时检测更多的错误来增加代码的稳定性。
Contents
1.List:是一种有序的列表,可以保存重复的元素。(ArrayList LinkedList )
(1) List 接口增加的方法介绍:
void add(intindex,Eelement); 在指定位置 index 上添加元素 element booleanaddAll(intindex,Collection<?extendsE>c); 将集合 c 的所有元素添加到指定位置
index Eget(intindex); 返回 List 中指定位置的元素 intindexOf(Objecto); 返回第一个出现元素 o 的位置,找不到返回-1
int lastIndexOf(Objecto); 返回最后一个出现元素 o 的位置,找不到返回-1
E remove(intindex); 删除指定位置上的元素, 并返回这个元素的值
E set(intindex,Eelement) 元素 element 取代位置 index 上的元素,并且返回旧的元素
ListIteratorlistIterator(); 返回一个列表迭代器,用来访问列表中的元素
ListIteratorlistIterator(int index);
返回一个列表迭代器,用来从指定位置 index 开始访问列表中的元素
(2) ArrayList 是用可变数组实现的,适合随机访问,但是在列表中间进行添加和删除元素效率低。LinkedList 是用双向链表实现的,可以方便的在列表中添加和删除元素,但不适合随机访问。
(3) LinkedList 有很多方法,但有很多方法的功能几近相同,或者只是有细微的差别。
add()、addLast()、offerLast()、offer()都是把元素插入列表的尾部。
addFirst()、offerFirst()、push()都是把元素插入列表的头部。
getFirst()、peek()、peekFirst()、element()都是返回列表头部的第一个元素。 getLast()、peekLast()都是返回列表最后一个元素。
pollFirst()、poll()、removeFirst() 都是删除并返回列表的第一个元素。
pollLast()、removeLast()都是删除并返回列表的最后一个元素。
2.Set:Set 中的方法和 Collection 接口一样,Set 中不能保存重复的元素。SortedSet 继承了 Set, 它必须保证集合中的元素有序存放。(HashSet TreeSet LinkedHashSet)
(1)HashSet 使用散列函数,它实际上就是一个 HashMap 实例,都是一个存放链 表的数组。它针对快速查找进行了优化, 因此我们通常会选择 HashSet。
(2)TreeSet 是 SortedSet 的唯一实现类。它将元素按照红黑树数据结构进行排序,也就说是一棵自平衡的排序二叉树。向 TreeSet 中添加的对象应该是实现了 Comparable接口,具有比较规则的,或者在构造 TreeSet 对象时提供 Comparator 对象给添加到集合里的对象增加比较规则。