Java集合转换

一、list之间进行转换

1.从list集合中提取某一个字段,到一个list集合中

例:从userList的集合中提取出phoneNum字段

1.1.方式一

List<String> phoneNumList = userList.stream()
    .map(UserEntity -> UserEntity.getPhoneNum())
    .collect(Collectors.toList());

1.2.方式二

List<String> phoneNumList = Lists.transform
    (userList,UserEntity  -> UserEntity.getPhoneNum()); 

2.list集合取交集、差集、并集

2.1.交集

List<String> newList = list1.stream()
    .filter(item -> list2.contains(item)).collect(toList());

2.2.差集

List<String> newList = list1.stream()
    .filter(item -> !list2.contains(item)).collect(toList());

2.3.并集

List<String> listAll = list1.parallelStream().collect(toList());
List<String> listAll2 = list2.parallelStream().collect(toList());
listAll.addAll(listAll2);
List<String> newList = listAll.stream().distinct().collect(toList());

二、list与set转换

1.list->set

Set< T > set = new HashSet(userList);

2.set->list

List< T > list = new ArrayList(set);

三、list与map转换

1.List<T> -->Map<String, T>

Map<Integer, Pig> mapById = pigs.stream()
        .collect(Collectors.toMap(
                        Pig::getId,
                        a -> a,
                        (k1, k2) -> k1));

mapById.forEach((k, v) -> {
    System.out.println(k + " -> " + v.toString());
});


2.List<T> --> Map<String, List<T>>

Map<String, List<Pig>> groupByGender = pigs.stream()
        .collect(Collectors.groupingBy(Pig::getGender));

groupByGender.forEach((k, v) -> {
    System.out.println(k + " -> " + v);
});


3.List<T> --> Map<String, Count>

Map<String, Long> groupByGenderThenCount = pigs.stream()
        .collect(Collectors.groupingBy(
                        Pig::getGender,
                        Collectors.counting()
                ));

groupByGenderThenCount.forEach((k, v) -> {
    System.out.println(k + " -> " + v);
});


4.List<T> --> Map<ID, String>

Map<Integer, String> genderNameMap = pigs.stream()
        .collect(Collectors.toMap(
                        Pig::getId,
                        pig -> pig.getName() == null ? "" : pig.getName(),
                        (oldValue, newValue) -> newValue));

genderNameMap.forEach((k, v) -> {
    System.out.println(k + " -> " + v.toString());
});

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值