ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Map集合遍历键值对方式和HashMap存储自定义类型键值

2022-07-06 17:34:38  阅读:131  来源: 互联网

标签:Map 自定义 map 集合 键值 key put


Map集合遍历键值对方式

Map集合遍历的第二种方式:使用Entry对象遍历

Map集合中的方法:

    Set<Map.Entry<K,V>> entrySet()返回此映射中包含的映射关系的 Set 视图。

实现步骤:

1.使用Map集合中的方法entrySet( ),把Map集合中多个Entry对象取出来,存储到一个set集合中

2.遍历set集合,获取每一个Entry对象

3.使用Entry对象中的方法getKey ()和getvalue()获取键与值

public static void main(String[] args) {
        //创建Map集合对象
        Map<String ,Integer> map = new HashMap<>();
        map.put("超人",168);
        map.put("祖国人",165);
        map.put("小卡了米",178);
        //1.使用Map集合中的方法entrySet(),把Nap集合中多个Entry对象取出来,存储到一个set集合中
        Set<Map.Entry<String,Integer>> set = map.entrySet();
        //72.遍历set集合,获取每一个Entry对象
        //使用迭代器遍历set集合
        Iterator<Map.Entry<String,Integer>> it = set.iterator( );
        while(it.hasNext()) {
            Map.Entry<String, Integer> entry = it.next();
            //3.使用Entry对象中的方法getKey()和getvalue( )获取键与值
            String key = entry.getKey();
            Integer value = entry.getValue();
            System.out.println(key + "=" + value);
        }
    }
​//Map集合遍历键值对方式
public class MapDemo2 {
    public static void main(String[] args) {
        //创建Map集合对象
        HashMap<Integer, String> map = new HashMap<Integer, String>();
        //添加元素
        map.put(1, "a");
        map.put(2, "b");
        map.put(3, "c");
        map.put(4, "d");
        //获取键值对集
        Set<Entry<Integer, String>> entrys = map.entrySet();
        //增强for方式 遍历键值对集 得到每一个键值对
        for(Entry<Integer, String> entry : entrys) {
            //通过键值对获取键
            Integer key = entry.getKey();
            //通过键值对获取值
            String value = entry.getValue();
            System.out.println(key + ":" + value);
        }
        
        Iterator it = entrys.iterator();
        //迭代器方式 遍历键值对对象集 得到每一个键值对对象
        while(it.hasNext()) {
            //通过键值对对象获取键值对
            Entry<Integer, String> entry = (Entry<Integer, String>)it.next();
            //通过键值对获取键
            Integer key = entry.getKey();
            //通过键值对获取值
            String value = entry.getValue();
            System.out.println(key + "=" + value);
        }
    }
}
​

 

HashMap存储自定义类型键值

练习∶每位学生(姓名,年龄)都有自己的家庭住址。那么,既然有对应关系,则将学生对象和家庭住址存储到map集合中。学生作为键,家庭住址作为值。

HashMap存储自定义类型键值key : Herson类型
  person类就必须重hashcode方法和equals方法,以保证key唯一value:String类型
可以重复

public static void main(String[] args) {
//    showe1();
    show2();
    }
            /*
                HashMap存储自定义类型键值key : String类型
                String类重写hashcode方法和equals方法,可以保证key唯一value :Person类型
                vatue可以重复(同名同年龄的人视为同一个)
              */

        private static void showe1() {
            //创建HashMap集合
            HashMap<String,Person> map = new HashMap<>();
            //往集合中添加元素
            map.put("北京", new Person("张三", 18));
            map.put("上海" , new Person("李四", 19));
            map.put("广州" , new Person("王五", 20));
            map.put("北京" ,new Person("赵六", 18));
            //使用keyset加增强for遍历Map集合
            Set<String> set = map. keySet();
            for (String key : set){
                Person value = map.get(key ) ;
            System.out.println( key+"-- >"+value);
            }
        }

     private static void show2(){
         //创建HashMap集合
         HashMap<Person, String> map = new HashMap<>();
         //往集合中添加元素
         map.put(new Person("老八",20),"土星");
         map.put(new Person("老六",20),"毛里求斯");
         map.put(new Person("乡巴佬",20),"水星");
         map.put(new Person("老baby",20),"太阳");
         //使用entrySet和增强for遍历Map集合
         Set<Map.Entry<Person, String>> entries = map.entrySet();
         for (Map.Entry<Person,String> entry: entries){
             Person key = entry.getKey();
             String value = entry.getValue();
             System.out.println(key+"-->"+value);
         }

     }

 

标签:Map,自定义,map,集合,键值,key,put
来源: https://www.cnblogs.com/yuzong/p/16451688.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有