美文网首页程序员
Java集合框架(三)

Java集合框架(三)

作者: cuzz_ | 来源:发表于2018-03-07 15:15 被阅读0次

    Map接口

    Map接口中键和值一一映射 , 可以通过键来获取值

    • 给定一个键和一个值,你可以将该值存储在一个Map对象,你可以通过键来访问对应的值。
    • 当访问的值不存在的时候,方法就会抛出一个NoSuchElementException异常.
    • 当对象的类型和Map里元素类型不兼容的时候,就会抛出一个 ClassCastException异常。
    • 当在不允许使用Null对象的Map中使用Null对象,会抛出一个NullPointerException 异常。
    • 当尝试修改一个只读的Map时,会抛出一个UnsupportedOperationException异常

    Map接口中的常用方法

    image.png

    代码演示

    import java.util.HashMap;
    import java.util.Map;
    
    public class MapDemo {
        public static void main(String[] args){
            // 创建Map对象
            Map<String, String> map = new HashMap<String, String>();
            // 添加元素
            map.put("星期一", "Monday");
            map.put("星期天", "Sunday");
            System.out.println(map);                       // {星期天=Sunday, 星期一=Monday}
            
            // 当给给Map中添加元素,会返回原来对应的value值
            // 若key没有对应的值,返回null
            System.out.println(map.put("星期一", "Mon"));   // Monday
            System.out.println(map);                       // {星期天=Sunday, 星期一=Mon
            
            // 根据指定的key获取相应恩value
            String value = map.get("星期天");
            System.out.println(value);                     // Sunday 
            
            // 根据key删除元素,会返回key对应value值
            String v = map.remove("星期天");
            System.out.println(v);                         // Sunday
        }
    }
    

    Map集合遍历键找值方式

    • 获取Map集合中所有的键,由于键是唯一的,所以返回一个Set集合存储所有的键
    • 遍历键的Set集合,得到每一个键
    • 根据键,获取键所对应的值
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Set;
    
    
    public class MapDemo {
        public static void main(String[] args){
            // 创建Map对象
            Map<String, String> map = new HashMap<String, String>();
            // 添加元素
            map.put("星期天", "Sunday");
            map.put("星期一", "Monday");
            map.put("星期二", "Tuesday");
            map.put("星期三", "Wednesday");
            map.put("星期四", "Thursday");
            map.put("星期五", "Friday");
            map.put("星期六", "Saturday");
            
            
            // 获取Map中所有的key,是一个Set集合
            Set<String> keySet = map.keySet();
            
            // 迭代器遍历
            Iterator<String> iterator = keySet.iterator();
            while(iterator.hasNext()){
                // 获取key
                String key = iterator.next();
                // 获取value
                String value = map.get(key);
                System.out.println(key + "= " + value);
            }
            
            // 使用增强for
            for(String key1: keySet){
                String value1 = map.get(key1);
                System.out.println(key1 + "= " + value1);           
            }
        }
    }
    

    Entry键值对对象

    Map类设计时,提供了一个嵌套接口:EntryEntry将键值对的对应关系封装成了对象。即键值对对象,这样我们在遍历Map集合时,就可以从每一个键值对(Entry)对象中获取对应的键与对应的值

    image.png
    image.png

    Map集合遍历键值对方式

    • 获取Map集合中,所有的键值对(Entry)对象,以Set集合形式返回
    • 遍历包含键值对(Entry)对象的Set集合,得到每一个键值对(Entry)对象
    • 通过键值对(Entry)对象,获取Entry对象中的键与值
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Set;
    
    
    public class MapDemo {
        public static void main(String[] args){
            // 创建Map对象
            Map<String, String> map = new HashMap<String, String>();
            // 添加元素
            map.put("星期天", "Sunday");
            map.put("星期一", "Monday");
            map.put("星期二", "Tuesday");
            map.put("星期三", "Wednesday");
            map.put("星期四", "Thursday");
            map.put("星期五", "Friday");
            map.put("星期六", "Saturday");
            
            // 获取Map中所有的key和value的对应关系
            Set<Map.Entry<String, String>>  entrySet = map.entrySet();
            
            // 迭代器遍历
            Iterator<Map.Entry<String, String>> iterator = entrySet.iterator();
            while(iterator.hasNext()){
                // 获取entry
                Map.Entry<String, String> entry = iterator.next();
                // 获取key
                String key = entry.getKey();
                // 获取value
                String value = entry.getValue();
                System.out.println(key + "= " + value);
            }
            
            // 使用增强for
            for(Map.Entry<String, String> entry: entrySet){
                // 获取key
                String key = entry.getKey();
                // 获取value
                String value = entry.getValue();
                System.out.println(key + "= " + value);     
            }
        }
    }
    

    Collections集合工具类

    image.png
    // 排序前元素list集合元素 [33,11,77,55]
    Collections.sort(list);
    // 排序后元素list集合元素 [11,33,55,77]
    
    // list集合元素 [11,33,55,77]
    Collections.shuffle(list);
    // 使用shuffle方法后,集合中的元素为[77,33,11,55],每次执行该方法,集合中存储的元素位置都会随机打乱
    

    集合继承体系的面向对象思想

    image.png
    • 接口:用来明确所有集合中该具有的功能,相当于在定义集合功能标准
    • 抽象类:把多个集合中功能实现方式相同的方法,抽取到抽象类实现,具体集合不再遍写,继承使用即可
    • 具体类:继承抽象类,实现接口,重写所有抽象方法,达到具备指定功能的集合。每个具体集合类,根据自身的数据存储结构方式,对接口中的功能方法,进行不同方式的实现

    相关文章

      网友评论

        本文标题:Java集合框架(三)

        本文链接:https://www.haomeiwen.com/subject/tjyjfftx.html