Map
* HashMap
*
*
* Map特性:无序 可重复
*
* value可重复 , key不可重复
*
*
* 添加方法put(Object key,Object value):向map中添加键值对
*
*
* void clear:清空
*
*int size()添加个数
*
* isEmpty()判断是否为空
*
*
* get(Object key) 根据key获取value
*
* Collection values()或获取map中所有value值
*
* booelan containsKey (Object key) 判断是否包含某个key
* booelan containsValue (Object value) 判断是否包含某个key
*
*
* Set keySet()获取map中所有key 以Set集合形式返回
*
* Set entrySet():返回map中的键值对映射(key =value),以Set集合形式返回
*
*
* V remove() 根据key删除指定映射关系 返回value值
*
* map不能直接遍历,可以通过keySet等方法简介遍历
* Map和集合的操作 基本都是一样的
public static void main(String[] args) {
Map map =new HashMap();
map.put("A", "one");
map.put("B", "two");
map.put("C", "three");
map.put(1003, "tree");
map.put('a', 1000);
map.put(65, 1000);
map.put("A", 1000);
map.put(null, null);
System.out.println(map.size());
//调用1003 hashCode值 然后进行hash得到数组下标
//用该对象调用equals方法 和数组中链表的所有对象key进行比较
System.out.println(map.containsKey("1003"));
System.out.println(map.containsValue(1000));
System.out.println("-------");
//获取所有的value并遍历
Collection c = map.values();
for (Object object : c) {
System.out.println(object);
}
//跟据key删除指定键值对 ,删的是谁
System.out.println(map.remove("C"));
System.out.println("----");
Set keys = map.keySet();
for (Object key : keys) {
System.out.println(keys);
Set entrySet = map.entrySet();
for (Object object : entrySet) {
//转换为Entry类型
Entry entry =(Entry) object;
System.out.println(entry.getKey()+":"+entry.getValue());
}
}
}
泛型
* 类型检查:
*
*
* 编译过程中,检查数据类型是否匹配
*
* 什么是泛型
*
*
*
* 比如 我现在存储学生成绩,不需要存储其他类型,只要保存小数即可,如果我们还使用Object的话必须向下转型
*
* 而引入泛型之后,我们可以指定存储的类型,那么编译器,在编译阶段,就会检查添加数据的类型是否一致,不一样就报错
*
*
* 泛型只能是引用数据类型,不能是基本数据类型
*
*
* 优点:统一数据类型,减少类型转换
*
*
* 缺点:只能存储单一的元素
*
* 泛型:就是在集合声明的时候指定了该集合类型指明了类型之后,再向集合添加数据的时候,就会自动校验,类型不一致会报错
*
*
*
*
*
* ?表示不确定类型
*
* 如果人家规定了泛型,可以让我们指定数据类型,如果不指定的情况下,默认就是Object
public static void main(String[] args) {
//不使用泛型 什么也能放但是获取使用的时候
Set s = new HashSet();
A a = new A();
B b = new B();
C c = new C();
s.add(a);
s.add(b);
s.add(c);
for (Object object : s) {
if (object instanceof A) {
A a1 = (A) object;
a1.m1();
}else if (object instanceof B) {
B b1 = (B) object;
b1.m2();
}else if (object instanceof C) {
C c1 = (C) object;
c1.m3();
}
}
}
}
class A{
public void m1(){
System.out.println("----");
}
}
class B {
public void m2(){
System.out.println("11111");
}
}
class C {
public void m3(){
System.out.println("==========");
}
}