0
点赞
收藏
分享

微信扫一扫

stream常用方法及stream().filter()的用法和Collectors.toMap 用法


stream常用方法

public class test {
public static void main(String[] args) {
List<KeyValue> keyValueList = new LinkedList<>();
keyValueList.add(newKeyValue("1", "1"));
keyValueList.add(newKeyValue("2", "1"));
keyValueList.add(newKeyValue("3", "33333"));
keyValueList.add(newKeyValue("4", "56"));
keyValueList.add(newKeyValue("5", "55"));
keyValueList.add(newKeyValue("5", "55"));
System.out.println(keyValueList);
//分组
Map<String, List<KeyValue>> map = keyValueList.stream().collect(groupingBy(KeyValue::getValue));
System.out.println(map);
//还有sum() max() min() average()看名字就是什么
//过滤
List<KeyValue> collect1 = keyValueList.stream()
.filter(keyValue -> "1".equals(keyValue.getValue())).collect(toList());
System.out.println(collect1);
//去除重复元素
List<KeyValue> collect2 = keyValueList.stream().distinct().collect(toList());
System.out.println(collect2);
//排序 升序
List<KeyValue> collect3 = keyValueList.stream()
.sorted((p1, p2) -> Integer.valueOf(p1.getValue()) - Integer.valueOf(p2.getValue())).collect(toList());
System.out.println(collect3);
//前几
List<KeyValue> collect4 = keyValueList.stream().limit(2).collect(toList());
//去除前几
List<KeyValue> collect = keyValueList.stream().skip(2).collect(toList());
//将流中的每一个元素 T 映射为 R(类似类型转换)
List<String> strings = keyValueList.stream().map(KeyValue::getValue).collect(toList());
System.out.println(strings);
//打印
keyValueList.stream().forEach(System.out::println);

}

public static KeyValue newKeyValue(String key, String value) {
KeyValue keyValue = new KeyValue();
keyValue.setKey(key);
keyValue.setValue(value);
return keyValue;
}


}

stream().filter()的用法
stream.filter一般适用于list集合,主要作用就是模拟sql查询,从集合中查询想要的数据。filter里面的参数user是指集合里面的每一项
配合collect 使用

过滤空指针异常

        List<Stu> filtered = list.stream().filter(s ->  s.getAge() != null && s.getAge()==19).collect(Collectors.<Stu>toList());

//过滤出符合条件的数据
List<Apple> filterList = appleList.stream().filter(a -> a.getName().equals("香蕉")).collect(Collectors.toList());

System.err.println("filterList:"+filterList);
[Apple{id=2, name='香蕉', money=2.89, num=30}]

return codeValuePairs.stream()
.filter(p -> !StringUtils.isBlank(p.getCode()))
.collect(Collectors.toMap(
p -> InputTypeId.parse(p.getCode()), CodeValuePair::getValue, (o1, o2) -> o1
));

Java8 Stream collect(Collectors.toMap()) 用法

Collectors.toMap 用法
在我们实际开发过程中经常使用到将List 转为Map的过程,在Java8 中Stream提供简便开发的方式,

三个重载的方法
两个参数

public static <T, K, U>
Collector<T, ?, Map<K,U>> toMap(Function<? super T, ? extends K> keyMapper,
Function<? super T, ? extends U> valueMapper) {
return new CollectorImpl<>(HashMap::new,
uniqKeysMapAccumulator(keyMapper, valueMapper),
uniqKeysMapMerger(),
CH_ID);
}



举报

相关推荐

0 条评论