• Java基础Map接口+Collections工具类


    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap

       (1)其中LinkedHashMap是有序的  怎么存怎么取出来

      我们讲一下Map的增删改查功能:

            /*
             * Map集合的添加
             */
            Map<String, String> map = new HashMap<String, String>();
            map.put("星期一", "Monday");
            map.put("星期六", "Sunday");
            System.out.println(map);
            
            /*
             * 通过建   获取值
             */
            String string = map.get("星期六");
            System.out.println(string);
            
            /*
             * 通过建  修改值
             */
            map.put("星期一", "Mon");
            System.out.println(map);
            
            /*
             * 通过建  删除值
             */
            String remove = map.remove("星期六");
            System.out.println(remove);
            System.out.println(map);
        }

     以上就是Map的增删改查方法

    2.Map的遍历

     1.第一种:通过keySet()方法获取集合的所有建 存储在Set<>集合中

        (1)增强for

        (2)迭代器

      Map<String, Character> map =new LinkedHashMap<String, Character>();
            map.put("一", '1');
            map.put("二", '2');
            map.put("三", '3');
            map.put("四", '4');
            map.put("五", '5');
            Set<String> set = map.keySet();

           (1)增强for

        for (String string : set) {
                System.out.println(string+" "+map.get(string));
            }

      (2)迭代器

        Iterator<String> iterator = set.iterator();
                while(iterator.hasNext()){
                String str=iterator.next();
                Integer integer = map.get(str);
                System.out.println(str+"   "+integer);
            }

    第二种 通过 Map.Entry<K,V>    在Map类设计时,提供了一个嵌套接口:Entry。  Entry将键值对的对应关系封装成了对象。

              getKey()方法:获取Entry对象中的键
              getValue()方法:获取Entry对象中的值
              entrySet()方法:用于返回Map集合中所有的键值对(Entry)对象,以Set集合形式返回。

           (1)增强for

          Set<Entry<String, Character>> entries = map.entrySet();
                for (Entry<String, Character> entry : entries) {
                    String str = entry.getKey();
                    Character character = entry.getValue();
                    System.out.println(str+"   "+character);

           }

           (2)迭代器

        Set<Map.Entry<String, String>> entries = map.entrySet();
              Iterator<Map.Entry<String, String>> iterator = entries.iterator();
              while(iterator.hasNext()){
                    Entry<String, String> entry = iterator.next();
                    System.out.println(entry.getKey()+"  "+entry.getValue());
            }

    3.Map之嵌套

        我们在嵌套Map中传入引用类型Person  这里记得要重写equlas与HashCode方法

        private static void fun6() {
            Map<Person, String> map1 = new LinkedHashMap<Person, String>();
            map1.put(new Person("黄晓明", 40), "北京");
            map1.put(new Person("AnlayBay", 36), "北京");
            
            Map<Person, String> map2 = new LinkedHashMap<>();
            map2.put(new Person("宋江",40), "梁山");
            map2.put(new Person("林冲",40), "豹子头");
            
            Map<Map<Person,String>, String> map = new LinkedHashMap<>();
            map.put(map1, "第一组");
            map.put(map2, "第二组");
            
            for (Entry<Map<Person,String>, String> zhu: map.entrySet()) {
                String value = zhu.getValue();
                for (Entry<Person, String> entry : zhu.getKey().entrySet()) {
                    Person key = entry.getKey();
                    String value2 = entry.getValue();
                    System.out.println(value+".."+key+".."+value2);
                }
            }
            
        }
        /**
         * 迭代器遍历
         */
        private static void fun5() {
            Map<Person, String> map1 = new LinkedHashMap<Person, String>();
            map1.put(new Person("黄晓明", 40), "北京");
            map1.put(new Person("AnlayBay", 36), "北京");
            
            Map<Person, String> map2 = new LinkedHashMap<>();
            map2.put(new Person("宋江",40), "梁山");
            map2.put(new Person("林冲",40), "豹子头");
            
            Map<Map<Person,String>, String> map = new LinkedHashMap<>();
            map.put(map1, "第一组");
            map.put(map2, "第二组");
            
            Set<Map<Person,String>> set = map.keySet();
            Iterator<Map<Person, String>> iterator = set.iterator();
            while(iterator.hasNext()){
                Map<Person, String> next = iterator.next();
                String string = map.get(next);
                
                Set<Person> persons = next.keySet();
                Iterator<Person> iterator2 = persons.iterator();
                while(iterator2.hasNext()){
                    Person next2 = iterator2.next();
                    String string2 = next.get(next2);
                    System.out.println(string2+"   "+next2+"    "+string);
                }
            }
        }

    这里我补充一个集合的工具类

    Collections

    public static void main(String[] args) {
            ArrayList<String> arrayList = new  ArrayList<>();
            arrayList.add("a");
            arrayList.add("s");
            arrayList.add("g");
            arrayList.add("d");
            
            //排序
            Collections.sort(arrayList);
            System.out.println(arrayList);
            
            //翻转
            Collections.reverse(arrayList);
            System.out.println(arrayList);
            
            //打乱顺序
            Collections.shuffle(arrayList);
            System.out.println(arrayList);
            
            //二分查找
            List<Integer> integers = new ArrayList<>();
            Collections.addAll(integers, 1,2,3,4,5,7,8);
            System.out.println(integers);
            int binarySearch = Collections.binarySearch(integers, 6);
            System.out.println(binarySearch);
            
            //打乱shuffle
            Collections.shuffle(integers);
            System.out.println(integers);
        }

    今天大部分用代码展示了,不多做介绍,集合这一模块  无非就是增删改查   还有遍历,我在学习的过程中  基本每一个集合的方法我都会敲十遍加深印象  

  • 相关阅读:
    带有头结点的链表的基本操作
    转:gdb相关学习
    wareshark网络协议分析之ARP
    wareshark网络协议分析之DHCP
    java多线程(内附实例:窗口售票问题、人和叉子的问题)
    Android深度探索(卷1)HAL与驱动开发 虚拟环境的安装
    source insigt、pc-lint、VS联合使用
    java arrays类学习
    C#函数重载
    (转)Pycharm用鼠标滚轮控制字体大小
  • 原文地址:https://www.cnblogs.com/hd976521/p/6253753.html
Copyright © 2020-2023  润新知