• java之map接口


    一。collection与map集合的区别

    1.collection集合中的元素为孤立存在,map集合中的预算为成对存在(key键--vlaue值)

    2.collection集合为单列集合,map集合为双列集合

    3.collection集合中有重复的元素,也可以没有重复的元素,map集合中key值不能重复,但值可以重复

    4.Map中常用的集合为HashMap集合(存储无顺序)、LinkedHashMap集合(存储有顺序)

    5.键值遵循hashSet,不能重复,无序存储。linkedMap,有顺序。

    二。如果存储的键为自定义数据类型,必须重写键的hashCode()方法、equals()方法。

    person对象

     1 package com.oracle.demo01;
     2 
     3 public class Person {
     4  private String name;
     5  private Integer age;
     6 public String getName() {
     7     return name;
     8 }
     9 public void setName(String name) {
    10     this.name = name;
    11 }
    12 public Integer getAge() {
    13     return age;
    14 }
    15 public void setAge(Integer age) {
    16     this.age = age;
    17 }
    18 public Person(String name, Integer age) {
    19     super();
    20     this.name = name;
    21     this.age = age;
    22 }
    23 public Person() {
    24     super();
    25 }
    26 @Override
    27 public String toString() {
    28     return "Person [name=" + name + ", age=" + age + "]";
    29 }
    30  @Override
    31 public int hashCode() {
    32     final int prime = 31;
    33     int result = 1;
    34     result = prime * result + ((age == null) ? 0 : age.hashCode());
    35     result = prime * result + ((name == null) ? 0 : name.hashCode());
    36     return result;
    37 }
    38  @Override
    39 public boolean equals(Object obj) {
    40     if (this == obj)
    41         return true;
    42     if (obj == null)
    43         return false;
    44     if (getClass() != obj.getClass())
    45         return false;
    46     Person other = (Person) obj;
    47     if (age == null) {
    48         if (other.age != null)
    49             return false;
    50     } else if (!age.equals(other.age))
    51         return false;
    52     if (name == null) {
    53         if (other.name != null)
    54             return false;
    55     } else if (!name.equals(other.name))
    56         return false;
    57     return true;
    58 }
    59 }
     1 package com.oracle.demo01;
     2 
     3 import java.util.HashMap;
     4 import java.util.Set;
     5 
     6 //自定义类型Map集合中的键值
     7 public class Demo04 {
     8 public static void main(String[] args) {
     9     HashMap<Person,String>  map=new HashMap<Person,String>();
    10     //自定义类使用对象的形式存储数值
    11     map.put(new Person("一",18),"yi");
    12     map.put(new Person("二",18),"er");
    13     map.put(new Person("三",18),"san");
    14     map.put(new Person("一",18),"wu");
    15     //遍历
    16     Set<Person> set=map.keySet();
    17     for(Person p:set){
    18         System.out.println(p+"---"+map.get(p));
    19     }
    20     //重写hashcode(),equals()   source___  hashcode()and equals()  
    21 }
    22 }

    三。put  remove  get方法的使用

     1 package com.oracle.demo01;
     2 
     3 import java.util.HashMap;
     4 import java.util.HashSet;
     5 
     6 public class Demo01 {
     7     public static void main(String[] args) {
     8         HashMap<String, String> map = new HashMap<String, String>();
     9         // put存储键值对
    10         map.put("yi", "123");
    11         map.put("er", "456");
    12         map.put("yi", "456");
    13         map.put("san", "789");
    14         //删除
    15         System.out.println(map.remove("yi"));
    16         // 取值 获得Value值    同一个key值,value值覆盖前面的内容,若无这个key值,返回null
    17         System.out.println(map.get("yi"));
    18     }
    19 }

    四。map集合中通过键查询value值的四种方法

    keyset+迭代器或增强for

     1 package com.oracle.demo01;
     2 
     3 import java.util.HashMap;
     4 import java.util.Iterator;
     5 import java.util.Set;
     6 
     7 public class Demo02 {
     8     public static void main(String[] args) {
     9         HashMap<String, String> map = new HashMap<String, String>();
    10         // put存储键值对,返回Value值
    11         map.put("yi", "123");
    12         map.put("er", "456");
    13         map.put("yi", "456");
    14         map.put("san", "789");
    15         // keyset+增强for ,得到key值
    16         // 导set包,
    17         /*
    18          * Set<String> ss=map.keySet(); //遍历 for(String s:ss){//获得S对应的key值
    19          * System.out.println(map.get(s));//传入s值,得到value值 }
    20          */
    21         // keySet+迭代器
    22         // 获得set集合,单列集合
    23         Set<String> s1 = map.keySet();
    24         // 创建迭代器
    25         Iterator<String> s2 = s1.iterator();
    26         // 遍历
    27         while (s2.hasNext()) {
    28             // 此时为两次next()
    29             // System.out.println(ssss.next()+","+map.get(ssss.next()));
    30             // 程序中最好出现一次next().
    31             String a = s2.next();
    32             System.out.println("键值key为" + a + ",value值为" + map.get(a));
    33         }
    34 
    35     }
    36 
    37 }

    enteyset+迭代器或增强for循环()

    1.首先获得键值对对象map.entry<E,E>   2.再使用getkey/getvalue

     1 package com.oracle.demo01;
     2 
     3 import java.util.HashMap;
     4 import java.util.Iterator;
     5 import java.util.Map;
     6 import java.util.Set;
     7 
     8 public class Demo03 {
     9     public static void main(String[] args) {
    10         //内部类的调用,内部类名.外部类名.方法/属性或创建对象
    11         //Entry把集合中的键值对封装称为对象(整体)Entry<E,E>,
    12         //然后通过getKey和GetValue,获得键值和value值
    13         HashMap<String, String> map = new HashMap<String, String>();
    14         // put存储键值对,返回Value值
    15         map.put("yi", "123");
    16         map.put("er", "456");
    17         map.put("yi", "456");
    18         map.put("san", "789");
    19         //entry+增强for
    20         //获得Map.Entry<String,String>对象的Set集合
    21         //泛型可以为数据类型、对象、集合
    22         Set<Map.Entry<String,String>> set=map.entrySet();
    23         /*for(Map.Entry<String,String> s:set){//获得set集合中的每一个对象
    24             String s1=s.getKey();
    25             String s2=s.getValue();
    26             System.out.println(s1+"---"+s2);
    27         }*/
    28         //获取迭代器
    29         Iterator<Map.Entry<String,String>> i=set.iterator();
    30     while(i.hasNext()){
    31         //得到每一个Entry对象
    32         Map.Entry<String,String>  entry=i.next();
    33         String s1=entry.getKey();
    34         String s2=entry.getValue();
    35         System.out.println(entry);//默认调用Entry中的tostring()方法
    36         System.out.println(s1+"/"+s2);
    37     }
    38     }
    39 }
  • 相关阅读:
    [BZOJ 2653]middle
    svn提交错误
    查看当前功能地址
    后台纯代码--短信验证
    图片验证码~~~之后台生成随机数
    小程序之~~登录后台代码
    小程序登录过程简介
    小程序之~微信登录后台代码
    小程序之~~基于微信登录,后台代码
    小程序之~~短信验证
  • 原文地址:https://www.cnblogs.com/mlf19920916/p/12147263.html
Copyright © 2020-2023  润新知