zoukankan      html  css  js  c++  java
  • Java

    Map   映射   通过某一个key可以直接定位到一个value值
       存储的方式以  键值对  存储   key-value
       key无序无重复   value无序可重复
       key无序还是一样,指的是存入顺序与取得顺序不一致
       key无重复当然指的是 元素不能一致
     1.map基本使用
        HashMap
        TreeMap
        Properties
      
     HashMap
     1.包 java.util
     2.如何创建对象
     3.基本方法
        增删改查
        增put(key,value) 存放一组映射关系   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 通过key获取value
         Set<Key> = keySet()获取全部的key
         Set<Entry> = entrySet();
        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  更适合遍历轮询
            LinkedList 更适合插入和删除
            Stack  LIFO
         Set家族无重复    存储元素希望自动去掉重复元素用这个
            Hash 性能更高
            Tree 希望存进去的元素自动去重复  同时还能自动排序
         Map家族k-v      通过唯一的k快速找寻v用这个
            Hash 性能更高
            Tree 希望存进去的元素key自动排序
     6.登录小流程
      能体会每一个不同集合的特点
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Iterator;
    
    public class LoginService {
    
        //设计一个方法  用来登录认证  一维数组
    //    private String[] userBox = new String[]{"123","1234","12345"};
    //    private int[] passwordBox = new int[]{123,1234,12345};
    //    public String loingForArray(String name,String password){
    //        for(int i=0;i<userBox.length;i++){
    //            if(userBox[i].equals(name)){
    //                if(passwordBox[i]==Integer.parseInt(password)){
    //                    return "登录成功";
    //                }
    //                break;
    //            }
    //        }
    //        return "用户名或密码错误";
    //    }
    
        //设计一个方法  用来登录认证---ArrayList
    //    private ArrayList<String> userBox = new ArrayList<String>();
    //    {
    //        userBox.add("123-123");
    //        userBox.add("1234-1234");
    //        userBox.add("12345-12345");
    //    }
    //    public String loginForList(String name,String password){
    //        for(int i=0;i<userBox.size();i++){
    //            String[] value = userBox.get(i).split("-");//一个人的信息 v[0] v[1]
    //            if(value[0].equals(name)){
    //                if(value[1].equals(password)){
    //                    return "登录成功";
    //                }
    //                break;
    //            }
    //        }
    //        return "用户名或密码错误";
    //    }
    
        //设计一个方法  用来登录认证-----Set
    //    private HashSet<String> userBox = new HashSet<String>();
    //    {
    //        userBox.add("123-123");
    //        userBox.add("1234-1234");
    //        userBox.add("12345-12345");
    //    }
    //    public String loginForSet(String name,String password){
    //        Iterator<String> it = userBox.iterator();
    //        while(it.hasNext()){
    //            String[] value = it.next().split("-");
    //            if(value[0].equals(name)){
    //                if(value[1].equals(password)){
    //                    return "登录成功";
    //                }
    //                break;
    //            }
    //        }
    //        return "用户名或密码错误";
    //    }
    
    
        //设计一个方法   用来登录认证---map     name(唯一)  pass
        private HashMap<String,Integer> userBox = new HashMap<String,Integer>();
        {
            userBox.put("123",123);
            userBox.put("1234",1234);
            userBox.put("12345",12345);
        }
        public String loginForMap(String name,String password){
            Integer realPassword = userBox.get(name);//null
            if(realPassword!=null && realPassword.equals(Integer.parseInt(password))){//名存在
                    return "登录成功";
            }
            return "用户名或密码错误";
        }
    
    
    }

     7.HashMap底层的数据结构存储
        散列表的形式 数组+链表
        Person对象存入HashMap中?  可以
        hashCode方法---->不同的对象 可以产生相同的hashCode码的
        不同的hashCode码-->不同的对象
     
    TreeMap  自然有序  按照Unicode编码自然有序
       map集合中的key需要可比较的   key的对象需要实现Comparable接口
     1.java.util包
     2.构造方法
        无参数  带map参数
     3.常用方法
        put  get   remove  replace  size
     4.底层数据结构的存储
        红黑二叉树
  • 相关阅读:
    MySQL查询出错提示 --secure-file-priv解决方法
    导入csv文件到mysql
    Ubuntu16.04配置phpmyadmin
    TensorFlow安装(Ubuntu 16.04)
    github设置只识别指定类型的文件
    python file operations
    Ubuntu16.04 install flash plugin
    PRML读书笔记——3 Linear Models for Regression
    Ubuntu下查看机器信息
    PRML读书笔记——2 Probability Distributions
  • 原文地址:https://www.cnblogs.com/yyanghang/p/11203999.html
Copyright © 2011-2022 走看看