public class LambdaTest {
public static List<Dog> list;
static {
list=new ArrayList<Dog>();
list.add(new Dog("aa", 2, "aaa"));
list.add(new Dog("bb", 3, "bbb"));
list.add(new Dog("cc", 1, "ccc"));
list.add(new Dog("dd", 4, "ddd"));
}
public static void main(String[] args) {
//list转map
Map<String,Dog> map=list.stream().collect(Collectors.toMap(Dog::getColor, Dog->Dog));
//filter过滤
List<Dog> list2=list.stream().filter( d-> d.getAge() > 2).collect(Collectors.toList());
//sorted排序
List<Dog> list3=list.stream().sorted((d1,d2)->d1.getAge().compareTo(d2.getAge())).collect(Collectors.toList());
//map():元素映射
List<String> list4=list.stream().map( d -> d.getAge() >3 ? "old":"child" ).collect(Collectors.toList());
//distinct去除重复元素
List<Dog> list5=list.stream().distinct().collect(Collectors.toList());
//分组groupingBy
Map<String, List<Dog>> groupBy = list.stream().collect(Collectors.groupingBy(Dog::getColor));
//计算
int sum = list.stream().mapToInt(Dog::getAge).sum();
int sum2=list.stream().map(Dog::getAge).reduce((d1,d2)->(d1+d2)).get();
//最大最小值
Dog d=list.stream().min((param1, param2) -> param1.getAge() >param2.getAge() ? 1 : -1).get();
Optional<Dog> opd=list.stream().max((param1, param2) -> param1.getAge() >param2.getAge() ? 1 : -1);
opd.orElseGet(null);
System.out.println( d);
}
/*
中间操作:
filter(): 对元素进行过滤
sorted():对元素排序
map():元素映射
distinct():去除重复的元素
map (mapToInt, flatMap 等)、 filter、 distinct、 sorted、 peek、 limit、 skip、 parallel、 sequential、 unordered
最终操作:
forEach():遍历每个元素。
reduce():把Stream 元素组合起来。例如,字符串拼接,数值的 sum,min,max ,average 都是特殊的 reduce。
collect():返回一个新的集合。
min():找到最小值。
max():找到最大值。
forEach、 forEachOrdered、 toArray、 reduce、 collect、 min、 max、 count、 anyMatch、 allMatch、 noneMatch、 findFirst、 findAny、 iterator
Short-circuiting:
anyMatch、 allMatch、 noneMatch、 findFirst、 findAny、 limit
*/
}
java8 -list
最新推荐文章于 2023-11-17 19:56:35 发布