2021-01-24

本文详细介绍了HashMap的特性和常用操作,如添加、删除、获取键值对,以及如何通过keySet和entrySet遍历。同时,讨论了泛型在集合中的作用,强调其在类型检查上的优势,保证了代码的安全性并减少了类型转换的需要。
摘要由CSDN通过智能技术生成

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("==========");
	}
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值