1、泛型的安全机制
泛型作用:强制了集合存储固定的数据类型
2、书写格式
//集合类<>
3、泛型的好处
①安全性提高了
②程序代码量减少
③避免了强制类型转换
④程序的问题提前到了运行前
4、泛型中的E
E没有实际价值,只是一个变量
特殊:等待接收指定的数据类型
ArrayList<String> ar = new ArrayList<String>(); //此时E变成String类型
5、自定义泛型类
public class MyGe<MY> { private MY i; public void setI(MY i){ this.i = i; } public MY getI(){ return i; } }
public class GeTest { public static void main(String[] args) { MyGe<String> my = new MyGe<String>(); my.setI("my"); String str = my.getI(); System.out.println(str); } }
6、自定义泛型方法
//非静态方法 public void print(MY my){ System.out.println(my); } //静态自定义泛型方法 public static <A>void print1(A a){ System.out.println(a); }
说明:
1、静态方法参数中的泛型,不能和类一样
2、静态方法的泛型,需要在方法上单独定义
3、定义写在返回值类型前面
7、泛型接口
方法1:
//定义接口 public interface In <A>{ public abstract void print2(A a); }
//实现类实现接口重写方法 public class GeTest2<A> implements In<A>{ public void print2(A a){ System.out.println(a); } }
//调用实现类 public class Test1 { public static void main(String[] args) { In<String> in = new GeTest2<String>(); in.print2("abc"); } }
方法2
//泛型接口的使用方法2 public class GeTest3 implements In<String>{ public void print2(String s){ System.out.println(s); } }
8、泛型通配符
public static void ha(List<?> list){ } //<?>表示通配符:可以传任何类型
9、泛型限定
泛型限定:限制的是数据类型
<? extends Company>传递类型可以是Company或者是其他子类 <? extends E>传递E类型或者是E的子类,泛型上限限定 <? super E>传递E类型或者是E的父类,泛型下限限定
1、Map接口方法
1、V put(k,v)存储键值对,存储重复键,返回被覆盖之前的值
2、V get(K)通过键获取值,参数传递键,找这个键对应的值,没有这个键返回null
3、boolean containsKey(K)判断集合是否包含这个键,返回true
4、boolean containsValue(V)判断集合是否包含这个值,返回true
5、int size()返回集合长度,Map集合中键值对的个数
6、V remove(K)移除指定键值对,返回被移除之前的值
7、Collectionvalues() Map集合中所有的值拿出,存储到Collection集合
2、Map集合的遍历-键值对映射关系
1、Map接口的方法Set<Map.Entry<Key.Value>>entrySet()
方法返回Set集合,集合中存储的元素,比较特别
存储的是Map集合中,键值对映射关系的对象,内部接口Map.Entry
2、遍历Set集合
3、取出Set集合的元素
是Map.Entry接口对象
接口对象方法:getKey(),getValue()
1、哈希表结构
2、保证键的唯一性,用于键的对象,必须重写hashCode,equals方法
3、集合允许使用null,作为键或值
继承于HashMap集合实现Map接口,LinkedHashMap底层事项原理是哈希表,双向链,存储有序,特性和HashMap一样
特点
底层是哈希表
线程安全,运行速度慢被HashMap取代
不允许null的值和键
特点
1、底层是红黑树结构
2、存储到TreeMap中元素,对键进行排序
3、排序依据对象的自然顺序,作为键的对象,实现了接口Comparable
自己提供比较器,实现家接口Comparator,优先级高
继承Hashtable,实现Map接口
底层是哈希表
线程是安全的运行速度慢
集合没有泛型的写法,键和值的数据类型是String类型
集合有自己的特有方法
此集合可以和IO流对象结合使用,实现数据的持久存储