JDK1.8filter,map排序,map聚合

本文介绍了如何使用Java 8的Stream API进行集合过滤,通过示例展示了如何去除空值,以及利用groupingBy和counting方法计算列表中元素的出现次数。接着,演示了如何对结果进行倒序排序,以便于分析数据分布。这些技巧在数据处理和分析场景中非常实用。
摘要由CSDN通过智能技术生成

集合使用filter过滤

package com.founder.saas;

import com.google.common.collect.Lists;

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

/**
 * @author zwy
 * @version 1.0
 * @description
 * @updateRemark
 * @updateUser
 * @createDate 2021/4/12 15:40
 * @updateDate 2021/4/12 15:40
 **/
public class test {

    public static void main(String[] args) {
        List<String> keywordsList = Lists.newArrayList();
        keywordsList.add("");
        keywordsList.add("test");
        keywordsList.add("test1");
        keywordsList.add("test2");
        keywordsList.add("");
        System.out.println("原始数据");
        System.out.println(keywordsList.toString());
        /// TODO: 2021/4/12  使用jdk 1.8 filter
        List<String> list = keywordsList.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
        System.out.println("过滤后");
        System.out.println(list.toString());

    }
}
原始数据
[, test, test1, test2, ]
过滤后
[test, test1, test2]

 

list中数据重复次数计算

package com.founder.saas;

import com.google.common.collect.Lists;

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

/**
 * @author zwy
 * @version 1.0
 * @description
 * @updateRemark
 * @updateUser
 * @createDate 2021/4/12 15:40
 * @updateDate 2021/4/12 15:40
 **/
public class test {

    public static void main(String[] args) {
        List<String> keywordsList = Lists.newArrayList();
        keywordsList.add("test");
        keywordsList.add("test1");
        keywordsList.add("test1");
        keywordsList.add("test2");
        keywordsList.add("test2");
        keywordsList.add("test3");
        Map<String, Long> collect = keywordsList.stream().collect(Collectors.groupingBy(p -> p, Collectors.counting()));
        System.out.println(collect.toString());

    }
}


//输出
{test2=2, test3=1, test=1, test1=2}

 

根据对象value倒序排序

package com.founder.saas;

import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import org.apache.commons.collections.MapUtils;

import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * @author zwy
 * @version 1.0
 * @description
 * @updateRemark
 * @updateUser
 * @createDate 2021/4/12 15:40
 * @updateDate 2021/4/12 15:40
 **/
public class test {

    public static void main(String[] args) {
        List<String> keywordsList = Lists.newArrayList();
        Map<String, Long> map = new LinkedHashMap<>();
        keywordsList.add("test");
        keywordsList.add("test1");
        keywordsList.add("test1");
        keywordsList.add("test2");
        keywordsList.add("test2");
        keywordsList.add("test3");
        Map<String, Long> collect = keywordsList.stream().collect(Collectors.groupingBy(p -> p, Collectors.counting()));
        System.out.println("排序前");
        System.out.println(collect.toString());
        collect.entrySet().stream().sorted(Map.Entry.<String, Long>comparingByValue().reversed()).forEachOrdered(e -> map.put(e.getKey(), e.getValue()));
        System.out.println("排序后");
        System.out.println(map.toString());
    }
}


//输出
排序前
{test2=2, test3=1, test=1, test1=2}
排序后
{test2=2, test1=2, test3=1, test=1}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值