zoukankan      html  css  js  c++  java
  • 0201 map接口

    Map接口特点:

    (1)Map接口中的数据存储是以键值对方式存在

    (2)collection是单列集合,Map是双列集合

    (3)Map中不允许存在相同的键值,但value值是可以重复的

    (4)Map接口中常用的集合有HashMap集合和LinkedHashMap集合

    Map中常用的方法

    put(k key,v value);将k键的key,v的value值存入集合中

    get(k key);得到key键的value值

    remove(k key );将k键为key的数据条删除

    代码展示:

    public class Demo01 {
    
    	public static void main(String[] args) {
    		//创建map集合
    		HashMap<String,Integer> map=new HashMap<String,Integer>();
    		//存值
    		map.put("喜洋洋",18);
    		map.put("美羊羊",19);
    		map.put("美羊羊",20);
    		//删除
    		map.remove("喜洋洋");
    		//取值
    		System.out.println(map.get("喜洋洋"));
    		System.out.println(map.get("美羊羊"));	
    	}
    
    }
    

      运行结果为:

    null
    20

    Map中遍历方法

    1、getkey()方法,该方法返回一个所有key所在的set集合,得到set集合后,可以用增强for或用迭代器去遍历这个set集合就可以了

    例:用增强for遍历

    public class Demo02 {
    
    	public static void main(String[] args) {
    		HashMap<String, String> map=new HashMap<String, String>();
    		map.put("小白", "java1127");
    		map.put("小黑", "java1128");
    		map.put("小兰", "java1129");
    		//1.keyset方法
    		//现获取key所在的set集合
    		Set<String> set=map.keySet();
    		//增强for遍历
    		for(String s:set){
    			System.out.println(s+"...."+map.get(s));
    		}
    		
    	}
    }
    

     例:用迭代器遍例

    public class Demo02 {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		HashMap<String, String> map=new HashMap<String, String>();
    		map.put("小白", "java1127");
    		map.put("小黑", "java1128");
    		map.put("小兰", "java1129");
    		//1.keyset加迭代器
    		Set<String> set=map.keySet();
    		Iterator<String> it=set.iterator();
    		while(it.hasNext()){
    			String key=it.next();
    			System.out.println(key+"..."+map.get(key));
    		}
    		
    	}
    }
    

     

    2、entrySet()方法,该方法返回一个存着键值对的set集合,(键值对集合:Map.entry<K,V>,entry<K,V>是map接口中用static修饰的内部类,该类中有独有的获取键和值的方法:getKey(),getValue(),这两个方法可以获取键值对的键和值)

    例:用增强for方法,遍例键值对

    public class Demo02 {
    
    	public static void main(String[] args) {
    		HashMap<String, String> map=new HashMap<String, String>();
    		map.put("小白", "java1127");
    		map.put("小黑", "java1128");
    		map.put("小兰", "java1129");
    		//2Entryaet对象
    		//获取所有结婚证所在的set集合
    		Set<Map.Entry<String, String>> set=map.entrySet();
    		//遍历set集合
    		for(Map.Entry<String, String> entry:set){
    			System.out.println(entry.getKey()+"..."+entry.getValue());
    		}
    	}
    }
    

      例:用迭代器,遍例键值对

    public class Demo02 {
    
    	public static void main(String[] args) {
    		HashMap<String, String> map=new HashMap<String, String>();
    		map.put("小白", "java1127");
    		map.put("小黑", "java1128");
    		map.put("小兰", "java1129");
    		//3.迭代器
    		//获取所有结婚证所在的set集合
    		Set<Map.Entry<String, String>> set=map.entrySet();
    		//获取迭代器对象
    		Iterator<Map.Entry<String, String>> it=set.iterator();
    		//遍历
    		while(it.hasNext()){
    			Map.Entry<String, String> entry=it.next();
    			System.out.println(entry.getKey()+"..."+entry.getValue());
    		}
    	}
    }
    

      Map集合中我们要存储自定义类对象时,要在自定义类中重写equls方法和hashcode方法。

    例:自定义Person类

    public class Person {
    
    	private String name;
    	private int age;
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public int getAge() {
    		return age;
    	}
    	public void setAge(int age) {
    		this.age = age;
    	}
    	@Override
    	public String toString() {
    		return "Person [name=" + name + ", age=" + age + "]";
    	}
    	public Person(String name, int age) {
    		super();
    		this.name = name;
    		this.age = age;
    	}
    	public Person() {
    		super();
    	}
    	@Override
    	public int hashCode() {
    		final int prime = 31;
    		int result = 1;
    		result = prime * result + age;
    		result = prime * result + ((name == null) ? 0 : name.hashCode());
    		return result;
    	}
    	@Override
    	public boolean equals(Object obj) {
    		if (this == obj)
    			return true;
    		if (obj == null)
    			return false;
    		if (getClass() != obj.getClass())
    			return false;
    		Person other = (Person) obj;
    		if (age != other.age)
    			return false;
    		if (name == null) {
    			if (other.name != null)
    				return false;
    		} else if (!name.equals(other.name))
    			return false;
    		return true;
    	}
    	
    }
    
    public class Demo03 {
    	public static void main(String[] args) {
    		HashMap<Person, String> map=new HashMap<Person, String>();
    		//存值
    		map.put(new Person("小红",18), "java1127");
    		map.put(new Person("小黑",19), "java1128");
    		map.put(new Person("小黑",19), "java1128");
    		//entryset加增强for
    		Set<Map.Entry<Person, String>> set=map.entrySet();
    		for(Map.Entry<Person, String> entry:set){
    			System.out.println(entry.getKey()+".."+entry.getValue());
    		}
    	}
    
    }
    

      

  • 相关阅读:
    2017-2018-1 20155306 20155315 《信息安全技术》实验二、Windows口令破解
    2017-2018-1 20155315 《信息安全系统设计基础》第六周课堂测试
    2017-2018-1 20155315 《信息安全系统设计基础》第6周学习总结
    2017-2018-1 20155315 《信息安全系统设计基础》第5周学习总结
    2017-2018-1 20155306 20155315 《信息安全系统设计基础》实验一 开发环境的熟悉
    2017-2018-1 20155315 《信息安全系统设计基础》第3周学习总结
    Makefile与Myod
    2017-2018-1 20155315 《信息安全系统设计基础》第二周课堂测试总结
    2017-2018-1 20155315 《信息安全系统设计基础》第1周学习总结
    第八周课上测试ch03
  • 原文地址:https://www.cnblogs.com/-gongxue/p/14355482.html
Copyright © 2011-2022 走看看