做建筑机械网站那个网站好,专门做app网站,德州万企互联网站制作,郑州水晶奖杯制作一、泛型 概述 JDK1.5同时推出了两个和集合相关的特性#xff1a;增强for循环#xff0c;泛型 泛型可以修饰泛型类中的属性#xff0c;方法返回值#xff0c;方法参数#xff0c; 构造函数的参数
Java提供的泛型类/接口 Collection, List, Set#xff0c;Iterator 等
…一、泛型 概述 JDK1.5同时推出了两个和集合相关的特性增强for循环泛型 泛型可以修饰泛型类中的属性方法返回值方法参数 构造函数的参数
Java提供的泛型类/接口 Collection, List, SetIterator 等
自定义的泛型 public class Student H,W{} 自定义的泛型方法 public static T void showList(ListT list){ //list.forEach(s- System.out.println(s)); for (T t : list) { System.out.println(t); } } 泛型的通配符 T: type(表示Java类型 类型) E: Element(主要在List中使用 元素) K: key(主要在Map集合中使用表示键) V value(主要在Map集合中使用表示值) 表示不确定类型的Java类型 泛型的边界 泛型的上界 语法? extends 类型 位置类上方法参数 泛型的下界 语法 super 类型 位置 方法参数 /*** 泛型的上界和下界** 是泛型的通配符不知道用什么类型的时候用?* 泛型上界语法 ? extends 类* 泛型下界语法 ? super 类**/
public class GenericityTest {public static void main(String[] args) {ListInteger list1 new ArrayList();ListString list2 new ArrayList();ListNumber list3 new ArrayList();ListObject list4 new ArrayList();ShowCollection sc new ShowCollection();sc.showList1(list1);//sc.showList1(list2); 编译不通过因为String不是Number的子类sc.showList1(list3);// sc.showList1(list4); 编译不通过Object不是 Number的子类// sc.showList2(list1); //编译不通过因为Integer不是Number的父类// sc.showList2(list2); //编译不通过因为String不是Number的父类sc.showList2(list3); //最小不能低于Number.此处是Numbersc.showList2(list4); //编译通过Object是Number的父类}
}class ShowCollection{//泛型的上界public void showList1(List? extends Numberlist){}//泛型的下界public void showList2(List? super Number list){}
}二、数据结构
1. 数据结构概述 - 数据结构式计算机底层存储、组织数据的方式是值数据与数据之间以什么样的方式排列在一起 - 选择合适和数据结构可以带来更搞笑的运行或者存储效率 2. 常见的数据结构 - 栈 - 队列 - 链表 - 数组 - ... 3. 栈数据结构的执行特点 - 后进先出先进后出 - 入栈/压栈 数据进入栈的过程 - 出栈/弹栈数据离开栈的过程 4. 队列 - 先进先出后进后出 - 入队列数据从队列后端进入队列的过程 - 出队列数据从队列前端离开对列的过程 5. 数组 - 数组是一种查询快增删慢的数据结构 - 数组在内存中是一块连续的存储空间 6. 链表 - 链表中的元素在内存中是不连续存储的游离每个元素节点都包含数据值和下一个元素的地址 - 链表查询慢增删快首尾操作极快
三、List java.util.List接口通常称为线性表* List继承自Collection特点是可以存放重复的元素并且有序** 常用的实现类* java.util.ArrayList:内部用数组实现查询性能好* java.util.LinkedList:内部使用链表实现增删性能好首尾增删性能最好* 在对集合操作性能没有特殊要求的条件下通常使用ArrayList*/
public class ListDemo {public static void main(String[] args) {ListString list new ArrayList();list.add(one);list.add(two);list.add(three);list.add(four);list.add(five);/*** E get(int index) 返回列表中指定位置的元素。*///获取集合中下标是3个元素System.out.println(list.get(3));//用for循环遍历集合for (int i 0; i list.size(); i) {System.out.println(list.get(i));}/*** E set(int index, E element)* 用指定元素替换列表中指定位置的元素可选操作。* 返回值是被替换掉的元素。*/String str list.set(1, 二);System.out.println(str);System.out.println(list);//反转集合for(int i0;ilist.size()/2;i){//获取i上的元素String e list.get(i);String s list.set(list.size()-1-i,e);list.set(i,s);}System.out.println(list);System.out.println();/*** Collections类中提供了静态方法static void reverse(List? list)反转指定列表中元素的顺序。*/Collections.reverse(list);System.out.println(list);}
}三点五、作业练习 /*** 泛型:* 泛型只是在编译期有效在编译之后程序会采取去繁星花的措施。将泛型相关的信息擦除**/
public class CollectionDemo3 {public static void main(String[] args) {ListString strs new ArrayList();ListInteger ints new ArrayList();Class aClass strs.getClass();Class bClass ints.getClass();System.out.println(aClass);System.out.println(bClass);// if(strs.equals(ints)){
// System.out.println(类型一致);
// }else{
// System.out.println(类型不一致);
// }}
}/*** 自定义泛型方法测试*/
public class ShowListTest {public static void main(String[] args) {ListInteger list new ArrayList();list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);//ShowList.showInt(list);ShowList.showList(list);ListString strs new ArrayList();strs.add(一);strs.add(二);strs.add(三);strs.add(四);strs.add(五);ShowList.showList(strs);ListTeacher teas new ArrayList();teas.add(new Teacher(张老师,1500));teas.add(new Teacher(李老师,2500));teas.add(new Teacher(孙老师,9500));teas.add(new Teacher(赵老师,3500));ShowList.showList(teas);}public static T void showList(ListT list){//list.forEach(s- System.out.println(s));for (T t : list) {System.out.println(t);}}
}