computeIfAbsent的使用

import org.springframework.util.StringUtils;

import java.util.*;

/**
 * @ClassName SpringBootTest
 * @Date 2024/6/4 16:14
 * @Description TODO
 */
public class SpringBootTest {

    public static void main(String[] args) {
        Map<String, List<String>> result = new LinkedHashMap<>();
        //数据准备
        List<String> list = new ArrayList<>();
        list.add("first");
        list.add("second");
        list.add("third");

        Map<String,String> properties = new HashMap<>();
        list.forEach(item -> {
            if ("second".equals(item))
                properties.put(item,"A,B,C");
            else
                properties.put(item,"A,B");
        });
        //测试开始
        System.out.println("----------------------------------------");
        properties.forEach((name, value) -> {
            //将字符串按”,“分割成String数组
            String[] factoryImplementationNames = StringUtils.commaDelimitedListToStringArray(value);
            // 获取result中key对应的List
            List<String> implementations = result.computeIfAbsent(name.trim(),
                    key -> new ArrayList<>(factoryImplementationNames.length));

            System.out.println("result-" + name + ": " + result.get(name));
            System.out.println("implementations: " + implementations.size());
            // 向result中对应的list添加元素
            Arrays.stream(factoryImplementationNames).map(String::trim).forEach(implementations::add);

            System.out.println("implementations: " + implementations.size());
            System.out.println("result-" + name + ": " + result.get(name));
            System.out.println("----------------------------------------");
        });
    }
}

结果

----------------------------------------
result-third: []
implementations: 0
implementations: 2
result-third: [A, B]
----------------------------------------
result-first: []
implementations: 0
implementations: 2
result-first: [A, B]
----------------------------------------
result-second: []
implementations: 0
implementations: 3
result-second: [A, B, C]
----------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值