Java8集合常用API-创新互联
常用api
本文名称:Java8集合常用API-创新互联
URL网址:http://ybzwz.com/article/jhecj.html
排序
成都创新互联公司主要从事成都网站制作、成都网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务徽县,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792stream().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://ybzwz.com/article/jhecj.html