Java实训学习之Map

package Test;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class Maptest {
	/*
	 * Map与Collection并列,数据关系:key-value
	 * Map的key用set存放,唯一,value可重复,相当于collection存储,两者组合后为Entry,是不可重复的
	 * list是collection的子接口,而collection与map并列
	 * 
	 * 
	 * map接口,不可进行实例化,需要new其实现类
	 * 以key-value 方式进行存储,key是唯一的,类似于学号,value可重复,类似于学生姓名
	 * map接口如何使用:
	 * HashMap    运行null键与null值,但key为空只能有一次,value为空则无妨
	 * 判断相等标准
	 * 两个key通过equal方法返回true,hashCode也相等,判key是否相同
	 * 两个value通过equal判断即可
	 * 另一个实现类  Hashtable  已淘汰
	 * 其不允许key  null  与value   null
	 * Propeties类是其子类,在数据库中使用  会将封装用户名,密码的代码封装在Propeties文件中,在使用时调用
	 * 即读取xxxx.Propeties文件信息
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		test2();
		
	}
	public static void test2() {
		Map map=new HashMap();//map也是堆里的地址值
		//put(key,value);键值对方式添加元素到集合
		map.put(123, 123);
		map.put(null,null);
		map.put("abc", "abc");
		map.put("1001","123");
		map.remove("abc");//遍历
		//Set keySet();
		System.out.println("=================================");
		Set set=map.keySet();
		for(Object s:set) {//无序性,set
			System.out.println(s);
		}
		System.out.println("==================================");
		Collection values=map.values();//map的值是collection类型,collection的无序是由于key导致的
		
		for(Object v:values) {
			System.out.println(v);
		}
		System.out.println("Key==================================");
		//遍历map的例方法
		Set key=map.keySet();
		for(Object o:key) {
			System.out.println(o+"--"+map.get(o));
		}
		System.out.println("entrySet==================================");
		//使用entrySet方法
		Set set1=map.entrySet();//因为key与value组合后即为enteySet
		for(Object o:set1)
			System.out.println(o);
		for(Object o:set1) {
			Entry entry=(Entry) o;
			System.out.println(entry.getKey()+"--"+entry.getValue());
		}
			
	}
	public static void test() {
		Map map=new HashMap();//map也是堆里的地址值
		//put(key,value);键值对方式添加元素到集合
		map.put(123, 123);
		map.put(null,null);
		map.put("abc", "abc");
		map.put(123, "中国加油");
		System.out.println(map);//由于key不可重复,故其会覆盖,map也重写了toString方法,否则输出地址值
		/*
		 * HashMap();
		 * key用set存储,不可重复,value用collection存储,可以重复
		 * 一个key -value 等于一个Entery ,不可重复 如果key出错重复,把上一个覆盖
		 * 判断标准是调用该对象的equals方法,此时,若toString被重写,则会比较值,否则比较地址
		 */
		map.put(new String("aaa"),"aaa");
		map.put(new String("aaa"),"bbb");
		System.out.println(map);//使用equals方法判断 String类重写了String方法,故比较的是值,而==是比较地址
		map.put(new StudentTest("鹏翔"), "商城");
		map.put(new StudentTest("鹏翔"), "科技");//由于该Student未写toString方法,故判断地址,
		System.out.println(map);
		System.out.println(map.hashCode());
		
	}
	

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彭祥.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值