黑马程序员——集合-泛型;Map

来源:互联网 发布:linux init work 编辑:程序博客网 时间:2024/06/02 10:03

1. 泛型
JDK1.5版本出现的一种安全机制
格式:
  集合类<数据类型> 变量 = new 集合类<数据类型>();
  数据类型,指定了这个集合,只能存储这个类型的对象


泛型的出现,将安全问题,由运行时期,提前到了编译时期
ArrayList<E>  boolean add(E e)  E:看成是一个变量
ArrayList<String>  所有的E都变成了String


好处,减少了代码,使用泛型避免类型的强制转换
泛型什么时候该写泛型:当你用一个类的时候,发现类的右边<>使用泛型了
注意:存储基本数据类型,泛型必须写8个对象包装类


2.  例:定义一个工厂,生产对象的,制造对象,下订单
  泛型类,声明类的时候,加上泛型
  泛型方法, 在方法上定义泛型,和类无关
  泛型接口
interface MyInter<T>{
void abc(T t);
}
//定义实现类,实现接口的同时,不指定泛型,等待new实现类对象的时候
class MyInterImpl<T> implements MyInter<T>{
public void abc(T t){
System.out.println(t);
}
}
public class GenericDemo5 {
public static void main(String[] args) {
MyInterImpl<String> my=new MyInterImpl<String>();
MyInterImpl<Integer> my2=new MyInterImpl<Integer>();
}
}
3. 泛型的通配符和限定
 通配意思就是所有的都匹配比如:*  *.java   XXX.*  ?
 
4. Map集合
  映射,键映射到值的集合,Map体系的集合,存储对象的时候,一次存储两个对象,一个称作键,一个称作值,双列集合
一个键,最多只能映射一个值
不允许出现重复键
5. Map接口中的方法
V put(K,V) 将键值对存储到集合。返回值,存储了重复的键,返回被覆盖之间的值
V get(K) 根据键,获取值,传递一个键,返回键映射的值,没有这个键,返回null
V remove(K)移除指定的键,对应的值,返回被移除前的值,没有移除成功,返回null
boolean containsKey(K)判断集合中,有没有这个键,有返回true
boolean containsValue(V)判断集合中个,有没有这个值,有返回true
Collection values()将集合中的所有值,保存到Collection集合
Set<K> keySet()键存储到Set集合
Set<Map.Entry<K,V>>映射关系对象保存到Set集合


6. 获取Map集合中键值对的方式
第一种,利用Map中的一个方法keySet(),Map集合中的键,存储到Set集合
迭代Set集合,获取出来的是所有的键
通过键获取值,Map接口中的get方法


第二种利用Map集合中的键值对映射关系获取
Map接口中有一个方法entrySet(),获取键值对的映射关系对象Entry,将这个对象Entry存储到了Set集合
迭代Set集合,获取出来的Set集合中存储的是映射关系对象Entry
通过关系对象的方法 getKey  getValue


7. Map中接口中,有一个子接口
 interface Map{
    interface Entry{}描述键值对映射关系的
    Entry接口中的两个方法 getKey()  getValue()
    Entry -- 结婚证  getKey()获取键  getValue()获取值
 }
8. HashMap类
  底层也是哈希表,允许存储null值,null键
  不同步,线程不安全,执行效率高
  保证:存储到HashMap集合中的键,唯一性
  自定义对象,保证唯一性,hashCode equals方法


0 0
原创粉丝点击