一 Map 容器
Map
存储的数据都是key,value键值对形式的
key 可以任意数据类型 无序的,唯一的 -->set结合
value 可以任意数据类型 无序的 ,不唯一的 -->Collection结合
一个key只能对应一个value(value可以为集合,集合中存储多个数据)
boolean containsKey(Object key)
如果此映射包含指定键的映射关系,则返回 true。
boolean containsValue(Object value)
如果此映射包含指定值的映射关系,则返回 true。
1.HashMap
HashSet是由HashMap维护的,但是HashMap是键值对的形式,初始容量是16,加载因子是0.75
* 底层是hash表的结构
* HashMap的key如果是引用数据类型的对象,做去重要重写hashCode和equals
* 如果想要实现value去重,需要手动判断
public class HashMap02 {
public static void main(String[] args) {
HashMap<Person,Integer> map=new HashMap();
map.put(new Person(01,"haha",100), 01);
map.put(new Person(02,"hehe",200), 03);
if(!map.containsValue(03)){
map.put(new Person(01,"haha",100), 03);
}
System.out.println(map);
}
}
HashMap和HashSet的关系
一句话:HashSet实际上为(key,null)类型的HashMap,而我们知道,HashSet的key是不能重复的,所以HashSet的值自然也是没有重复的.因为HashMap的key可以为null,所以HashSet的值可以为null
2.TreeMap
TreeSet是由TreeMap的key维护的,使用方式相同,但是是键值对的形式
二 反射
反射是发生在程序运行期间的行为--java的一个动静态机制 反射
反射
* 1.创建对象的时候,拿到的都是当前类型Class对象的一个镜像|赋值体
* 2.在类加载的时候,会在内存中存在当前类型的一个Class对象,一个类的Class对象中存储这个类的所有信息(属性,方法,构造器...)
* 3.只要我们能够获取这个类型的Class对象,就可以对这个类做一切操作
*
* Class 类的实例表示正在运行的 Java 应用程序中的类和接口
1.获取源头(Class对象):
三种方法: