List的stream用法

package com.glch.test;

import com.glch.base.util.StringUtil;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

/**
 * @author zhongzhilong
 * @date 2021-03-25
 * @description List的stream功能测试
 */
public class ListStreamTest {
    public static void main(String[] args) {
        List<Animal> list = new ArrayList<>();
        list.add(new Animal("小狗", 3, 1));
        list.add(new Animal("小猫", 4, 0));
        list.add(new Animal("小马", 5, 1));
        // 获取所有动物的名称,并且转为List
        List<String> nameList = list.stream().map(Animal::getName).collect(Collectors.toList());
        // 获取所有的动物名称,并且中间加入name不等于空的过滤,并且转为set
        Set<String> set = list.stream().filter(animal -> !StringUtil.isEmpty(animal.getName())).map(animal -> animal.getName()).collect(Collectors.toSet());
        // 简洁版本
        Set<String> set2 = list.stream().map(animal -> animal.getName()).collect(Collectors.toSet());
        // 获取tag = 1的动物列表
        List<Animal> tagList = list.stream().filter(animal -> animal.getTag() == 1).collect(Collectors.toList());
        // 获取动物的总年龄之和
        int sum = list.stream().mapToInt(Animal::getAge).sum();
        // 对list按年龄降序查询
        List<Animal> animalList = list.stream.sorted(Comparator.comparing(Animal::getAge).reversed()).collect(Collectors.toList()); 
        // 对list按年龄升序查询
        List<Animal> animalList = list.stream.sorted(Comparator.comparing(Animal::getAge)).collect(Collectors.toList());
        // 1)list进行去重,2)按照年龄降序 3)排除标记为0的数据
        List<Animal> reusltList = list.stream().filter(animal -> animal.getTag() != 0).sorted(Comparator.comparing(Animal::getAge).reversed()).distinct().collect(Collectors.toList());
    }

    static class Animal {
        private String name;
        private Integer age;
        private Integer tag;

        public void setName(String name) {
            this.name = name;
        }

        public String getName() {
            return name;
        }

        public Integer getAge() {
            return age;
        }

        public Integer getTag() {
            return tag;
        }

        public void setTag(Integer tag) {
            this.tag = tag;
        }

        public void setAge(Integer age) {
            this.age = age;
        }

        public Animal(String name, Integer age, Integer tag) {
            this.name = name;
            this.age = age;
            this.tag = tag;
        }
    }
}

List<Map<String,Object>> 转List和String的方法

package liststream;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * @author zhongzhilong
 * @date 2021/4/19
 * @decription
 */
public class ListToStringTest {
    public static void main(String[] args) {
        List<Map<String, Object>> list = new ArrayList<>();
        Map<String, Object> map = new HashMap<>();
        map.put("name", "小明");
        map.put("id", "1");
        list.add(map);
        Map<String, Object> map2 = new HashMap<>();
        map2.put("name", "小张");
        map2.put("id", "2");
        list.add(map2);
        // 1、List<Map<String,Object>>中获取List<String>
        List<String> stringList = list.stream().map(e -> e.get("id").toString()).collect(Collectors.toList());
        stringList.forEach(e -> {
            System.out.print(e + " ");
        });
        System.out.println("\n");
        // 2、List<Map<String,Object>>中获取String
        String idString = list.stream().map(e -> e.get("id").toString()).collect(Collectors.joining(","));
        System.out.println("idString = "+idString);
    }
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值