1、集合遍历
List<String> stringList = Arrays.asList("apppe","organge","banana");
// 原来的方式
for (String s : stringList) {
System.out.println(s);
}
// lambda 表达式
stringList.forEach(s->{
System.out.println(s);
});
2、排序
List<Dog> dogs = Arrays.asList(new Dog[]{
new Dog("n1", 12),
new Dog("n2", 14),
new Dog("n3", 11)
});
// 方法1
Collections.sort(dogs, new Comparator<Dog>() {
@Override
public int compare(Dog o1, Dog o2) {
return o1.getAge()>o2.getAge()?-1:1;
}
});
// 方法2
Collections.sort(dogs,(o1,o2)->(o1.getAge()>o2.getAge()?-1:1));
dogs.forEach(s->{
System.out.println(s.getAge());
});
注意:-1:代表第一个对象,1:代表第二个对象
3、过滤
List<String> stringList = Arrays.asList("apple","organge","banana");
// 获取集合中所有以“a”开头的字符串
// 原来的方式
List<String> newList = new ArrayList<String>();
for (String s : stringList) {
if(s.startsWith("a")){
newList.add(s);
}
}
// lambda表达式
List<String> newList2 = stringList.stream().filter(s -> {
if(s.startsWith("a")){
return true;
}
return false;
}).collect(Collectors.toList());
4、映射
List<String> stringList = Arrays.asList("apple","organge","banana");
// 获取集合中所有字符串的长度
// 原来的方式
List<Integer> newList = new ArrayList<Integer>();
for (String s : stringList) {
newList.add(s.length());
}
// lambda表达式
List<Integer> newList2 = stringList.stream().map(s -> {
return s.length();
}).collect(Collectors.toList());
// lambda 表达式
newList2.forEach(s->{
System.out.println(s);
});
注意:lambda表达式中的map函数把每个元素进行转换操作
5、规约
List<Integer> numList = Arrays.asList(1,2,3,4,5);
// 计算综合
// 原来的方式
Integer sum = 0;
for (Integer s : numList) {
sum += s;
}
// lambda表达式
sum = numList.stream().reduce(0,(a,b)->{
return a+b;
});
6、分组
List<Dog> dogs = Arrays.asList(new Dog[]{
new Dog("n1", 12),
new Dog("n2", 14),
new Dog("n3", 12)
});
// 根据年龄进行分组
Map<Integer, List<Dog>> collect = dogs.stream()
.collect(Collectors.groupingBy(s -> s.getAge()));
System.out.println(collect);