ICode9

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

集合(Map)的理解和使用

2022-06-10 18:02:52  阅读:100  来源: 互联网

标签:Map map value put 理解 User key 集合 out


对HashMap、TreeMap的使用和理解

1-Map的整体框架

/*
一、
Map:双列数据,存储key--value对的数据
         hashMap:(作为map的主要实现类);线程不安全,效率高;存储null的key和value
                  LinkedHashMap:保证在便利Map的时候,可以按照--添加顺序实现便利(怎么写的,怎么便利)
         treeMap:保证按照(key)/(定制)来实现--便利的操作
         Hashtable:古老实现类;线程安全,效率低;不能储存null的key和value  (已经out了)
                  Properties:处理配置文件,key和vaule都是String类型

二、
Map结构的理解
    Map中的key:无序、不可重复、使用set存储所有的key
    Map中的value:无序、可重复,使用Collection来存储所有的value
    一个键值对:key--value构成一个Entry的对象
    Map中的Entry:无序、不可重复,使用set存储entry

三、HashMap的常用方法
增:put(Object key ,Object value)
删:remove(Object key)
改:put(Object key ,Object value)
查:get(Object key)
长度:size();
便利:keySet()/values()/entry()


 */

2- HashMap的常用方法

public class About_HashMap__Understand {
    @Test
    public void MapTest1() {
        //三、SashMap的常用方法
        HashMap map = new HashMap();
        //1-添加
        map.put("AA", 123);
        map.put("BB", 13);
        map.put("ACC", 23);

        //2-修改(当key一样的时候,就是修改)
        map.put("AA", 9999999);
        System.out.println(map);

        //3-putAll 把一个集合放在另一个集合A.putAll(B)   --- >   把集合B的内容,放到集合A中
        HashMap map1 = new HashMap();
        map1.put(123, 544);
        map1.put(978, 99999999);
        map.putAll(map1);
        System.out.println(map);

        //4- remove(Object  key) -->  根据key来删除数据,返回的是 key对应的value
        Object value = map.remove(123);
        System.out.println(value); // 根据key来删除数据,返回的是 key对应的value
        System.out.println(map);

        //5- clear(清除数据)
        map.clear();
        System.out.println("clear后的的长度 =  " + map.size());
        System.out.println("clear后集合的内容  =  " + map);
    }

    @Test
    public void test2() {

        HashMap map = new HashMap();
        map.put("AA", 123);
        map.put("BB", 13);
        map.put("ACC", 23);

        //6查找 - get(Object  key)  //输入key,找到他的value
        System.out.println(map.get("AA"));

        //7- 检验是否存在--指定的这个key---.containsKey
        boolean isExistKey = map.containsKey("AA"); //是否存在Key="AA"的这个东西吗
        System.out.println("判断是否存在指定的这个key = " + isExistKey);

        //8- 检验是否存在--指定的这个value----.containsValue
        boolean isExistValue = map.containsValue(23); //是否存在Value=23 的这个东西吗
        System.out.println("判断是否存在指定的这个value = " + isExistValue);

        //9- isEmpty (看看这个集合,内容是否为空)
        /*
        map.clear();
        System.out.println("看看这个集合,内容是否为空  = "+map.isEmpty());
         */

    }

    @Test
    public void test3() {
        HashMap map = new HashMap();
        map.put("AA", 123);
        map.put("BB", 13);
        map.put("ACC", 23);

        //10- 便利所有的key: keySet()
        Set set = map.keySet();             //1- 先接收keySet的值
        Iterator iterator = set.iterator(); //2- 用接收的keySet的值..iterator();
        while ((iterator.hasNext())) {       //3- while便利keySet的值..iterator();
            System.out.println(" 便利所有的key = " + iterator.next());
        }
        System.out.println("--------------------");

        //11- 便利所有的value
        Collection values = map.values();
        for (Object obj : values) {
            System.out.println("便利所有的value = " + obj);
        }

        //12- 便利所有的key - value
        //便利方式一、
        Set entrySet = map.entrySet();
        Iterator iterator1 = entrySet.iterator();
        while (iterator1.hasNext()) {
            Object obj = iterator1.next();
            //entrySet集合中的元素都是entry
            Map.Entry entry = (Map.Entry) obj;
            System.out.println(entry.getKey() + " ----> " + entry.getValue());
        }
        //便利方式二、
        Set setKey = map.keySet();             //1- 先接收keySet的值
        Iterator iterator2 = setKey.iterator(); //2- 用接收的keySet的值..iterator();
        while ((iterator2.hasNext())) {       //3- while便利keySet的值..iterator();
            Object key = iterator2.next();
            Object value = map.get(key);
            System.out.println(key + " ======> " + value);

        }


    }
}

TreeMap的理解

/*
向TreeMap中添加key- value,要求key必须去由同一个类创建的对象
因为要按照key进行排序:自然排序,定制排序

TreeSet,就用compareTo和comparator来对类进行比较的
 */

TreeMap的使用

public class About_TreeMap_Understand {
    @Test //默认compareTo排序
    public void test1() {
        TreeMap map = new TreeMap();
        User user1 = new User("tom", 12);
        User user2 = new User("java", 121);
        User user3 = new User("C++", 152);
        User user4 = new User("C", 123);

        map.put(user1, 10);
        map.put(user2, 2);
        map.put(user3, 90);
        map.put(user4, 54);

        Set entrySet = map.entrySet();
        Iterator iterator1 = entrySet.iterator();
        while (iterator1.hasNext()) {
            Object obj = iterator1.next();
            //entrySet集合中的元素都是entry
            Map.Entry entry = (Map.Entry) obj;
            System.out.println("这里面用的是" + entry.getKey() + " ----> " + entry.getValue());
        }


    }

    @Test //new Comparator()  --按照age排序
    public void test2() {
        TreeMap map = new TreeMap(new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                if (o1 instanceof User && o2 instanceof User) {
                    User u1 = (User) o1;
                    User u2 = (User) o2;
                    return Integer.compare(u1.getAge(), (u2.getAge()));
                }
                throw new RuntimeException("你输入的类型有误");
            }
        });
        User user1 = new User("tom", 12);
        User user2 = new User("java", 121);
        User user3 = new User("C++", 152);
        User user4 = new User("C", 123);

        map.put(user1, 10);
        map.put(user2, 2);
        map.put(user3, 90);
        map.put(user4, 54);

        Set entrySet = map.entrySet();
        Iterator iterator1 = entrySet.iterator();
        while (iterator1.hasNext()) {
            Object obj = iterator1.next();
            //entrySet集合中的元素都是entry
            Map.Entry entry = (Map.Entry) obj;
            System.out.println(entry.getKey() + " ----> " + entry.getValue());
        }
    }
}

标签:Map,map,value,put,理解,User,key,集合,out
来源: https://www.cnblogs.com/chen-zhou1027/p/16364118.html

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

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

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

ICode9版权所有