zoukankan      html  css  js  c++  java
  • Map、Set的基本概括

    Map:

    在运用map和set

    集合之前首先要弄清楚它们的基本定义是什么。

    简介:map是一种关联式容器,但是她储存方式是以键值对(key/value)存在的。

    Map用法:

    定义Map集合并往集合中加入几个元素:

        //map 键值对 json格式 根据你的键名来获取对应的值
        Map<String, Object> map=new HashMap<>();
        map.put("ht", "邵阳");
        map.put("hxc","永州");
        map.put("zsy", "岳阳");
        map.put("cpc", "株洲");
        System.out.println(map);//輸出map中添加的值

    有的时候值插入过多就会出现重复值得问题是什么样子,那要怎么解决呢?

    key相同则覆盖values的值 以最后加入进去的值为真

    Map<Integer,Object> map2=new HashMap<>();
        //避免出现重复的健
        for (int i = 0; i <10; i++) {
            if (map2.containsKey(i)) {
                map2.put(i, "z"+i);
            }
        }

    如果值value相同 而key不同 又会成为什么问题?

    当键值对中的值相同而健不同,你可以同时创建2个输出发现

    键值对只和健有关,与值不相关。

    用方法Map.entrySet(),接口Map.Entry去映射输出Map中键值(因为接口中提供getKey与getValue方法)

    //用Map.Entry接口与Map.entrySet()方法映射
    for (java.util.Map.Entry<Integer,Object> emp :map2.entrySet()) {
            System.out.println("key"+emp.getKey()+"values:"+emp.getValue());
        }
        System.out.println(map2);

    Set:

    简介:set也是一种关联式容器,不过它的容器底层实现原理是黑红树;

    红黑树是一颗近似平衡的搜索二叉树,在对元素的查找中有很高的效率。

    Set用法:

    定义一个Set集合并往其中添加几条元素:

    Set<String> set=new TreeSet();
                //添加几个元素
                set.add("ht");
                set.add("zs");
                set.add("jk");
                set.add("hf");
                set.add("qq");

    set一般遵循自然排序(26个英文字母),Set集合的值是不可重复的,若是重复那么他就成了无序。

    迭代器输出元素

    //迭代器输出
            Iterator<String> iterator=set.iterator();
            while (iterator.hasNext()) {
                System.out.println(iterator.next());
            }

    for循环遍历元素

    //循环遍历输出
            for (String s : set) {
                System.out.println(s);
            }

    自定义排序

    //自定义排序器
                Set<Person> set2=new TreeSet<>(new Age());
                //equals比较的是内存的地址,而不是对象属性
    //            System.out.println(new Person(1,"青灯",17).equals(new Person(1,"青灯",17)));
                set2.add(new Person(1,"青灯",17));
                set2.add(new Person(1,"青灯",17));
                set2.add(new Person(1,"青灯",17));
                set2.add(new Person(1,"青灯",17));
                set2.add(new Person(1,"青灯",17));
                //foreach的底层原理就是迭代器
                for (Person p : set2) {
                    //默认转换为String的类型
                    System.out.println(p);
                }

    谢谢观看!

  • 相关阅读:
    Leetcode463. Island Perimeter
    C++ 编写的解码器小程序 map
    LeetCode706. Design HashMap
    LeetCode705. Design HashSet
    LeetCode804. Unique Morse Code Words
    c++后台开发 准备材料
    Scott Young-《如何高效学习》
    跳表和散列
    时间复杂度 log n
    第35题:LeetCode138. Copy List with Random Pointer
  • 原文地址:https://www.cnblogs.com/huangting/p/10933381.html
Copyright © 2011-2022 走看看