java list stream avg_Java8 list stream 测试用例小结

一、测试对象

package com.demo.crwien.test;

public class Student {

private Integer id;

private String groupId;

private String name;

private Integer age;

}

二、测试用例

package com.demo.lee.util;

import org.junit.Test;

import java.util.Arrays;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.function.Function;

import java.util.stream.Collectors;

import static java.util.stream.Collectors.groupingBy;

/**

* @author lee

*/

public class ListCollectionTest {

@Test

public void test1() {

//1.分组计数

List list = Arrays.asList(

new Student(1, "one", "zhao",11),

new Student(2, "one", "qian",22),

new Student(3, "two", "sun",33),

new Student(4, "two", "lee",18));

//1.1根据某个属性分组计数

Map result1 = list.stream().collect(Collectors.groupingBy(Student::getGroupId, Collectors.counting()));

System.out.println(result1);

//1.2根据整个实体对象分组计数,当其为String时常使用

Map result2 = list.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

System.out.println(result2);

//1.3根据分组的key值对结果进行排序、放进另一个map中并输出

Map xMap = new HashMap<>();

result1.entrySet().stream().sorted(Map.Entry.comparingByKey().reversed()) //reversed不生效

.forEachOrdered(x -> xMap.put(x.getKey(), x.getValue()));

System.out.println(xMap);

}

@Test

public void test2() {

List list = Arrays.asList(

new Student(1, "one", "zhao",11),

new Student(2, "one", "qian",22),

new Student(3, "two", "sun",33),

new Student(4, "two", "lee",18));

//2.分组,并统计其中一个属性值得sum或者avg:id总和

Map result3 = list.stream().collect(

Collectors.groupingBy(Student::getGroupId, Collectors.summingInt(Student::getId))

);

System.out.println(result3);

}

@Test

public void test3(){

List list = Arrays.asList(

new Student(1, "one", "zhao",11),

new Student(2, "one", "qian",22),

new Student(3, "two", "sun",33),

new Student(4, "two", "lee",18));

//3.根据某个属性过滤

List list1 = list.stream().filter(a -> a.getName().contains("a")).collect(Collectors.toList());

System.out.println(list1);

}

@Test

public void test4(){

List list = Arrays.asList(

new Student(1, "one", "zhao",11),

new Student(2, "one", "qian",22),

new Student(3, "two", "sun",33),

new Student(4, "two", "lee",18));

//4.根据对象属性进行分组,自行编辑分组条件

Map> collect = list.stream().collect(groupingBy(s -> {

Integer age = s.getAge();

if (0

return "baby";

}else if (10

return "teenager";

}else if (20

return "youth";

}else {

return "old";

}

}));

System.out.println(collect);

}

@test

public void test5(){

List list = Arrays.asList(

new Student(1, "one", "zhao",11),

new Student(2, "one", "qian",22),

new Student(3, "two", "sun",33),

new Student(4, "two", "lee",18));

//对象属性拼字符串

String investor = list.stream().map(Student::getName).collect(Collectors.joining(",")

}

@test

public void test6(){

List list = Arrays.asList(

new Student(1, "one", "zhao",11),

new Student(2, "one", "qian",22),

new Student(3, "two", "sun",33),

new Student(4, "two", "lee",18));

//对象属性求和

Integer result = list.stream().collect(Collectors.summingInt(Student::getAge));

System.out.println("所有学生年龄之和 : " + reuslt);

}

@test

public void test7(){

List list = Arrays.asList(

new Student(1, "one", "zhao",11),

new Student(2, "one", "qian",22),

new Student(3, "two", "sun",33),

new Student(4, "two", "lee",18));

//list转map

Map map = userlist.stream().collect(Collectors.toMap(User::getAge,User::getName));

}

@test

public void test8(){

//按名称描述排序

List enumList = Arrays.stream(ECLabelEnum.values()).sorted(Comparator.comparing(ECLabelEnum::desc)).collect(Collectors.toList());

}

//排序

@test

public void test9(){

//倒序,从大到小

list.stream().sorted(Comparator.comparing(Student::getAge));

//正序,从小到大

list.stream().sorted(Comparator.comparing(Student::getAge).reversed())

}

}

三、实战

Map dataMap = new HashMap<>(10);

List dataList = request.getDataList();

// 获取未加密的字符串(过滤不符合条件的)

List unEncryptData = dataList.stream().filter(s -> !isEncryptData(s)).collect(Collectors.toList());

// 移除未加密的

dataList.removeAll(unEncryptData);

if (encryptData != null && encryptData.size() > 0) {

collect = encryptData.stream().collect(Collectors.toMap(x -> x, x -> x,(k1,k2) -> k1));

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值