Java8集合常用API-创新互联

常用api

排序

成都创新互联公司主要从事成都网站制作、成都网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务徽县,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792
stream().sorted(Comparator.comparing(StudentInfo::getAge))

filter 筛选

ListintegerList = Arrays.asList(1, 1, 2, 3, 4, 5);
Liststream = integerList.stream().filter(i ->i >3).collect(Collectors.toList());;

distinct 去除重复元素

ListintegerList = Arrays.asList(1, 1, 2, 3, 4, 5);
Streamstream = integerList.stream().distinct();

分类

stream().collect(groupingBy(Dish::getType))

limit 返回指定流个数

ListintegerList = Arrays.asList(1, 1, 2, 3, 4, 5);
Streamstream = integerList.stream().limit(3);

skip 跳过流中的元素

ListintegerList = Arrays.asList(1, 1, 2, 3, 4, 5);
Streamstream = integerList.stream().skip(2);

map 流映射
所谓流映射就是将接受的元素映射成另外一个元素

ListstringList = Arrays.asList("Java 8", "Lambdas", "In", "Action");
Streamstream = stringList.stream().map(String::length);

Listdata = resultModel.getData();
ListstationList = data.stream().map(ModelingStationVO::getId).collect(Collectors.toList());

mapToInt 、mapToDouble
转换成intStream后可以用一些计算的API

int count = splitResult.stream ().mapToInt (res ->modelingStationExtendMapper.addBatch (res)).sum ();
double sum = value.stream().mapToDouble(rows ->Double.parseDouble(rows.get(2))).sum();

flatMap 流转换
将一个流中的每个值都转换为另一个流

List>senids = newFetchParams.stream().map(FetchParam::getIdarrayLongs).collect(Collectors.toList());
Listcollect = senids.stream().flatMap(list ->list.stream()).collect(Collectors.toList());

Map 循环

map.forEach((key, value) ->{ System.out.println(key + ":" + value);
});

List转Map

MaplistMap = modelingStationList.stream()
                .collect(Collectors.toMap(ModelingStation::getId, account ->account));

元素匹配(一般用于判断)

1.allMatch匹配所有

ListintegerList = Arrays.asList(1, 2, 3, 4, 5);
if (integerList.stream().allMatch(i ->i >3)) {
    System.out.println("值都大于3");
}

2.anyMatch匹配其中一个

ListintegerList = Arrays.asList(1, 2, 3, 4, 5);
if (integerList.stream().anyMatch(i ->i >3)) {
  System.out.println("存在大于3的值");
}

等同于

for (Integer i : integerList) {
    if (i >3) {
        System.out.println("存在大于3的值");
        break;
    }
}

3.noneMatch全部不匹配

ListintegerList = Arrays.asList(1, 2, 3, 4, 5);
if (integerList.stream().noneMatch(i ->i >3)) {
    System.out.println("值都小于3");
}
终端操作

统计流中元素个数

通过count统计出流中元素个数

ListintegerList = Arrays.asList(1, 2, 3, 4, 5);
Long result = integerList.stream().count();

查找

提供了两种查找方式

1、findFirst查找第一个

//查找到第一个大于 3 的元素并打印
ListintegerList = Arrays.asList(1, 2, 3, 4, 5);
Optionalresult = integerList.stream().filter(i ->i >3).findFirst();

2、findAny随机查找一个

ListintegerList = Arrays.asList(1, 2, 3, 4, 5);
Optionalresult = integerList.stream().filter(i ->i >3).findAny();

通过findAny方法查找到其中一个大于三的元素并打印,因为内部进行优化的原因,当找到第一个满足大于三的元素时就结束,该方法结果和findFirst方法结果一样。提供findAny方法是为了更好的利用并行流,findFirst方法在并行上限制更多

reduce 将流中的元素组合起来

假设我们对一个集合中的值进行求和

JDK8 之前:

int sum = 0;
for (int i : integerList) {
sum += i;
}

JDK8 之后通过reduce进行处理

int sum = integerList.stream().reduce(0, (a, b) ->(a + b));

一行就可以完成,还可以使用方法引用简写成:

int sum = integerList.stream().reduce(0, Integer::sum);

reduce接受两个参数,一个初始值这里是 0,一个BinaryOperator accumulator来将两个元素结合起来产生一个新值,

另外, reduce 方法还有一个没有初始化值的重载方法

获取流中最小大值

通过 min/max 获取最小大值

OptionalInt min = menu.stream().mapToInt(Dish::getCalories).min();
OptionalInt max = menu.stream().mapToInt(Dish::getCalories).max();

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


名称栏目:Java8集合常用API-创新互联
本文URL:http://azwzsj.com/article/jhecj.html