第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

put與putIfAbsent區(qū)別

標(biāo)簽:
Java

put与putIfAbsent区别:

put在放入数据时,如果放入数据的key已经存在与Map中,最后放入的数据会覆盖之前存在的数据,

而putIfAbsent在放入数据时,如果存在重复的key,那么putIfAbsent不会放入值。


putIfAbsent   如果传入key对应的value已经存在,就返回存在的value,不进行替换。如果不存在,就添加key和value,返回null


底层实现:

public V put(K key, V value) {      if (value == null)           throw new NullPointerException();      int hash = hash(key.hashCode());      return segmentFor(hash).put(key, hash, value, false); } public V putIfAbsent(K key, V value) {      if (value == null)           throw new NullPointerException();      int hash = hash(key.hashCode());      return segmentFor(hash).put(key, hash, value, true); }

例子:

package com.xx;import java.util.HashMap;import java.util.Map;/** * JustForTest * * @create 2018-06-20 12:14 */public class TestHan {    public static void main(String[] args) {        /**         * put         */        Map<Integer,String> map = new HashMap<>();        map.put(1,"ZhangSan");        map.put(2,"LiSi");        map.put(1,"WangWu");        map.forEach((key,value) ->{            System.out.println("key : " + key + " , value : " + value);        });                /**         * putIfAbsent         */        Map<Integer,String> putIfAbsentMap = new HashMap<>();        putIfAbsentMap.put(1,"张三");        putIfAbsentMap.put(2,"李四");        putIfAbsentMap.put(1,"王五");        putIfAbsentMap.forEach((key,value) ->{            System.out.println("key : " + key + " , value : " + value);        });    }}

            输出结果:

                

            key : 1 , value : WangWu

            key : 2 , value : LiSi

            key : 1 , value : 张三

            key : 2 , value : 李四

package com.xx;import com.alibaba.fastjson.JSON;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * JustForTest * * @create 2018-06-20 12:14 */public class TestHan {    /**     * 处理重复数据与不重复数据,以重复数据为唯一,合并数据的方法。     */    public static void main(String[] args) {        List<Student> list = new ArrayList<>();        list.add(new Student("张三", 1));        list.add(new Student("李四", 1));        list.add(new Student("王五", 2));        list.add(new Student("赵六", 1));        list.add(new Student("孙七", 2));        list.add(new Student("周八", 1));        list.add(new Student("吴九", 2));        //对于上面的学生、如果根据班级进行区分?!        Map<Integer,List<Student>> map = new HashMap<>();        List<Student> students;        for(Student s : list) {            /**             * put不管什么直接存入,返回旧值             * putIfAbsent如果为null才存入,返回旧值。             */            students = map.putIfAbsent(s.getInClass(),new ArrayList<Student>(list.size()));            if (null == students) {                students = map.get(s.getInClass());            }            students.add(s);        }        //循环Map        map.forEach((key,value) -> {            System.out.println("班级:" + key + ",人员:" + JSON.toJSONString(value));        });    }}
package com.xx;/** * @author hanliwei * @create 2018-06-20 16:00 */public class Student {    private String name; //姓名    private Integer inClass;//所属班级    Student(String name,Integer inClass) {        this.name = name;        this.inClass = inClass;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Integer getInClass() {        return inClass;    }    public void setInClass(Integer inClass) {        this.inClass = inClass;    }}

------------------------------

Java8之Map的其他一些方法

------------------------------

Map<Integer,String> map = new HashMap<>();map.put(1,"a");map.put(2,"b");map.put(3,"c");
/** * 1.getOrDefault 方法 * * 如果指定的key存在,则返回该key对应的value, * 如果不存在,则返回指定的值。 * * 例子:key为4不存在,输出d */System.out.println(map.getOrDefault(4,"d"));

输出:d

/** * 2.forEach 方法 * * 遍历Map中的所有Entry, 对key, value进行处理,     接收参数 (K, V) -> void, */map.forEach((key,value) -> System.out.println("key : " + key + " , value:" + value));

        输出:

        key : 1 , value:a

        key : 2 , value:b

        key : 3 , value:c

/** * 3.replaceAll 方法 * 替换Map中所有Entry的value值,这个值由旧的key和value计算得出,    接收参数 (K, V) -> V */map.replaceAll((key,value) -> ("new" + key) + value);map.forEach((key,value) -> System.out.println("key : " + key + " , value:" + value));

        输出:

        key : 1 , value:new1a

        key : 2 , value:new2b

        key : 3 , value:new3c

/** * 4.putIfAbsent 方法 * 如果key关联的value不存在,则关联新的value值,返回key关联的旧的值 */map.putIfAbsent(3, "d");map.putIfAbsent(4, "d");System.out.println(map.get(3));System.out.println(map.get(4));

    输出:

    c

    d

/** * 5.remove方法 * 接收2个参数,key和value,如果key关联的value值与指定的value值相等(equals),则删除这个元素 */map.remove(1,"b");System.out.println(map.get(1));//未删除成功,输出amap.remove(2,"b");System.out.println(map.get(2));//删除成功,输出null
/** * 6.replace(K key, V oldValue, V newValue) 方法 * 如果key关联的值与指定的oldValue的值相等,则替换成新的newValue */map.replace(3,"a","z");System.out.println(map.get(3));//未替换成功,输出cmap.replace(1,"a","z");System.out.println(map.get(1));//替换成功,输出z
/** * 7.replace(K key, V value) 方法 * 如果map中存在key,则替换成value值,否则返回null */// 输出旧的值, aSystem.out.println(map.replace(1, "aa"));// 替换成功,输出新的值, aaSystem.out.println(map.get(1));// 不存在key为4, 输出 nullSystem.out.println(map.replace(4, "d"));// 不存在key为4, 输出 nullSystem.out.println(map.get(4));
/** * 8.computeIfAbsent 方法 * 如果指定的key不存在,则通过指定的K -> V计算出新的值设置为key的值 */map.computeIfAbsent(1, key -> key + " computed");// 存在key为1,则不进行计算,输出值 aSystem.out.println(map.get(1));map.computeIfAbsent(4, key -> key + " computed");// 不存在key为4,则进行计算,输出值 4 computedSystem.out.println(map.get(4));
/** * 9.computeIfPresent 方法 * 如果指定的key存在,则根据旧的key和value计算新的值newValue, * 如果newValue不为null,则设置key新的值为newValue, * 如果newValue为null, 则删除该key的值, */map.computeIfPresent(1, (key, value) -> (key + 1) + value);// 存在key为1, 则根据旧的key和value计算新的值,输出 2aSystem.out.println(map.get(1));map.computeIfPresent(2, (key, value) -> null);// 存在key为2, 根据旧的key和value计算得到null,删除该值,输出 nullSystem.out.println(map.get(2));




點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消