zoukankan      html  css  js  c++  java
  • java HashMap,TreeMap

    Map 映射 通过某一个key可以直接定位到一个value值

    存储的方式 键值对 存储  key-value

    key无序无重复  value无序可重复

    key无序还是一样  指的是存入顺序与取得顺序不一致

    key无重复 元素不能一样;

    1.map基本使用

      HashMap

      TreeMap

      Properites(读取文件的信息)

    HashMap

    1.包 java.util

    2.如何创建对象

    3.基本方法

      增删改查

      put  存放一组映射关系 key-value

        1.key存储的顺序与取得顺序不同;

        2.不同的key可以存储相同的value

        3.key若有相同的 则将 原来的value覆盖而不是拒绝存入(跟set刚好相反)

       删 E=remove(key);

      改 put(key,value1) put(key,value2)  replace(key,newValue)

      查 E=get(key)

      遍历map集合? 获取到所有的key  遍历key  通过key获取value

      size()

    4.除了上述几个常用的方法外,其它API中提供的方法

      clear  containsKey(key)  containsValue(value)

      getOrDefault(key,defaultValue);如果key存在就返回对应的value;若没有找到,则返回默认值;

      isEmpty()

      putAll(另一个map);

      putIfAbsent(key,value);如果key不存在才向集合内添加 如果key存在就不添加啦

    5.map集合在什么情形下用?

      1.想要存储一组元素

        数组 or 集合 如果存储的元素以后长度不变用数组 如果长度以后不确定 用集合;

      2.如果发现长度以后不确定 -->集合

        List Set Map

        List家族有序的 存储有顺序用这个

          ArrayList  更适合遍历轮询;(Vector)

          LinkedList 更适合插入和删除

          Stack LIFO

        Set家族无重复 存储元素希望自动去掉重复元素用这个

          Hash 性能更高

          Tree 希望存进去的元素自动去重复  同时还能自动排序

        Map家族k-v 通过唯一的k快速找寻v用这个;

          Hash  性能更高

          Tree 系统存进去的元素key自动排序;

      6.登录小流程

    import java.util.*;
    //3种方式实现登录
    public class Test0521{
    	/*
    	public String login(String name,String password){
    		String[] a=new String[]{"张三","李四","王五"};
    		int[] p=new int[]{123,456,789};
    		for(int i=0;i<a.length;i++){
    			if(a[i].equals(name)){
    				if(p[i]==Integer.parseInt(password)){										
    					return "登录成功!";						
    				}
    			break;	
    			}			
    		}	
    		return "账号或密码错误!!";
    	}
    	public static void main(String[] args){
    		Test0521 x=new Test0521();
    		System.out.println(x.login("张三","789"));
    	}
    	*/
    	/*
    	private ArrayList<String> a=new ArrayList<String>();
    	{
    		a.add("张三-123");
    		a.add("张四-456");
    		a.add("李留-789");
    	}
    	public String login(String name,String password){
    		for(int i=0;i<a.size();i++){
    			String[] ap=a.get(i).split("-");
    			if(ap[0].equals(name)){
    				if(ap[1].equals(password)){
    					return "登录成功!";
    				}
    				break;
    			}			
    		}
    		return "账号或密码错误!!";
    	}
    	public static void main(String[] args){
    		Test0521 x=new Test0521();
    		System.out.println(x.login("李留","89"));
    	}
    	*/
    	/*
    	private HashSet<String> a=new HashSet<String>();
    	{
    	a.add(new String("张三-123"));
    	a.add("张四-456");
    	a.add("李留-789");
    	}
    	public String login(String name,String password){
    		Iterator<String> m=a.iterator();
    		
    		while(m.hasNext()){
    			String[] n=m.next().split("-");
    			if(n[0].equals(name)){
    				if(n[1].equals(password)){
    					return "登录成功!";
    				}
    				break;
    			}			
    		}
    		return "账号或密码错误!!";
    	}
    	public static void main(String[] args){
    		Test0521 x=new Test0521();
    		System.out.println(x.login("三","789"));
    	}
    	*/
    	/*
    	static HashMap<Integer,String> a=new HashMap<Integer,String>();
    	{
    		a.put(0,"zhangsan-123");
    		a.put(1,"lihua-456");
    		a.put(2,"老刘-789");		
    	}
    	public String login(String n,String p){
    		Set<Integer> keys=a.keySet();
    		Iterator<Integer> ti=keys.iterator();		
    		while(ti.hasNext()){
    			Integer i=ti.next();
    			String[] ac=a.get(i).split("-");
    			if(ac[0].equals(n)){
    				if(ac[1].equals(p)){					
    					return "登录成功!";
    				}
    				break;
    			}
    		}
    		return "账号或密码错误!!";
    	}//HashMap 方式一
    	*/
    	private HashMap<String,String> a=new HashMap<String,String>();
    	{
    		a.put("zhangsan","123");
    		a.put("lihua","456");
    		a.put("老刘","");		
    	}
    	public String login(String n,String p){
    		/*
    		Set<String> keys=a.keySet();
    		Iterator<String> ti=keys.iterator();		
    		while(ti.hasNext()){
    			String i=ti.next();
    			String ps=a.get(i);
    			if(i.equals(n)){
    				if(ps.equals(p)){					
    					return "登录成功!";
    				}
    				break;
    			}
    		}//方式一
    		return "账号或密码错误!!";
    		*/
    		if((a.get(n))!=null && p.equals(a.get(n))){
    			
    			return "登录成功!";//个人认为(a.get(n))!=null && 可不需要
    		}//HashMap 方式二
    		return "账号或密码错误!!";
    		
    		
    	}
    	public static void main(String[] args){
    		Test0521 x=new Test0521();		
    		System.out.println(x.login("老刘klj",""));
    	}		
    }
    

      7.HashMap底层的数据结构存储

        散列表的形式  数组+链表

       

     

    import java.util.*;
    import java.util.Map.Entry;
    
    public class Test0521{
    	public static void main(String[] args){
    		HashMap<Integer,String> a=new HashMap<Integer,String>();
    		a.put(0,"abc");//增
    		a.put(9,"ab");
    		a.put(2,"a2b");
    		a.put(0,"a0b");
    		a.put(8,"ab");
    		System.out.println(a);
    		System.out.println(a.remove(0));//删除
    		System.out.println(a);
    		//a.put(2,"bc");//改
    		a.replace(2,"bc");//改
    		System.out.println(a);
    		System.out.println(a.get(2));//查
    		System.out.println(a);
    		//获取集合的全部key		
    		Set<Integer> keys=a.keySet();//Set集合
    		Iterator<Integer> it=keys.iterator();
    		while(it.hasNext()){
    			Integer k=it.next();
    			System.out.println(k+"---"+a.get(k));			
    		}//遍历方式1
    		System.out.println("有效元素个数:"+a.size());
    		Set<Entry<Integer,String>> mn=a.entrySet();
    		Iterator<Entry<Integer,String>> ii=mn.iterator();
    		while(ii.hasNext()){
    			Entry<Integer,String> nn=ii.next();
    			Integer kk=nn.getKey();
    			String vv=nn.getValue();
    			System.out.println(kk+"-->"+vv);			
    		}//遍历方式2
    	}
    }
    

     ------------------------------------------------------------------------------------------------------------

     TreeMap  自然有序 按照Unicode编码自然有序

      1.java.util包

      2.构造方法

        无参数 带map参数

      3.常用方法

        put get remove replace  size

      4.底层数据结构的存储

        红黑二叉树 

      

    import java.util.*;
    public class Test0521{
    	public static void main(String[] args){
    		TreeMap<Integer,String> a=new TreeMap<Integer,String>();
    		a.put(0,"a");
    		a.put(1,"b");
    		a.put(7,"k");
    		a.put(3,"ef");
    		System.out.println(a);
    	}
    }
    

      

    越努力,越幸运!!! good good study,day day up!!!
  • 相关阅读:
    Js高程:教你如何写出可维护的代码
    ES6 尾调用和尾递归
    js判断对象是否为空对象,判断对象中是否有某属性
    WebSocket断开原因、心跳机制防止自动断开连接
    Js闭包使用姿势指南
    浏览器事件模型
    Js数组排序
    简单的前端错误处理
    移动端做弹窗类页面注意事项
    加载时常统计
  • 原文地址:https://www.cnblogs.com/canglongdao/p/12941533.html
Copyright © 2011-2022 走看看