• Map接口以及HashMap、LinkedHashMap实现类


    Map接口,底层哈希表实现,无序,保证键的唯一性需要重写hashCode()和equals()方法

    方法

    添加,修改

    V put(K key, V value)   // 添加成功返回空,键重复时,修改值,返回修改之前的值

    V replace(K key, V value)   // 有此键时,修改值,返回之前的值;无此键返回null

    void putAll(Map<? extends K, ? extends V> m)  // 对每一个m中的元素进行put操作

    获取

    V get(K key)  // 通过键得到值,若无此键,返回null

    Collection<V>  values()    // 返回所有的值

    删除

    v remove(K key)   // 返回删除之前的值,若无此键,返回null

    boolean remove(K key, V value)  // 删除对应的键值对,必须完全相同,返回true 

    遍历

    Set keySet()   // 把key装进Set集合,然后进行遍历,Map不能直接遍历

                    Map<Integer, String> m = new HashMap<>();
            
            m.put(1, "qian");
            m.put(2, "sun");
            m.put(3, "li");
            m.put(4, "zhou");
        
            Set<Integer> keySet = m.keySet();
            for(Integer i: keySet)
            {
                String s = m.get(i);
                System.out.println(s);
            }
            System.out.println("######################");
            
            Iterator<Integer> it  = keySet.iterator();
            while(it.hasNext())
            {
                String s = m.get(it.next());
                System.out.println(s);
            }
            
            System.out.println("######################");
            keySet.forEach(e->{
                System.out.println(m.get(e));
            });
            System.out.println("######################");
            keySet.forEach(new Consumer<Integer>() {
    
                @Override
                public void accept(Integer t) {
                    System.out.println(m.get(t));
                }
                
            });
            
    View Code

    Set entrySet() //  把entry对象放进集合,entry对象就是键值对,通过entry对象的getKey(),getValue()方法得到相应内容

                Set<Entry<Integer, String>> s = m.entrySet();
            
            for(Entry<Integer, String> e:s)
            {
                System.out.print(e.getKey());
                System.out.println(e.getValue());
            }    
    View Code

    void forEach(BiConsumer<? super K, ? super V> action)

            m.forEach((key, value)->{
                System.out.println("{" + key + ":" + value + "}");
            });

    判断是否存在元素

    boolean containsKey(Object key)

    boolean containsValue(Object value)

    清空

    clear()

    实现类HashMap与Map接口方法一致,LinkedHashMap有序

                    Map<Integer, String> m = new LinkedHashMap<>();
            
            m.put(1, "qian");
            m.put(2, "sun");
            m.put(3, "li");
            m.put(4, "zhou");
            m.forEach((key, value)->{
                System.out.println("{" + key + ":" + value + "}");
            });        
    // 输出
    {1:qian}
    {2:sun}
    {3:li}
    {4:zhou}
                
    View Code
  • 相关阅读:
    Unity3d通用工具类之生成文件的MD5
    Unity3d-Socket之龙一编年史network.dll分析(2)-> CNetLogger
    Unity3d-Socket之龙一编年史network.dll分析(1)
    Unity3d设计模式之单例模式
    c#中的??运算符
    java 字节流
    java File文件操作
    java 线程池和lamda表达式
    java 线程状态(通信/等待/唤醒)
    java 线程安全
  • 原文地址:https://www.cnblogs.com/YKang/p/7285336.html
Copyright © 2020-2023  润新知