不多bb就告诉大家这个东西干嘛用的,然后就开始用:
Stream API对集合数据进行操作,就类似于使用SQL执行的数据年近询。也可以使用Stream API来并行执行操作。简言之,Stream API提供了一种高效且易于使用的处理数据的方式。
这是过程:
以下是常用方法(图是扣的,侵删:
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class Lambda {
public static void main(String[] args) {
// new Thread(new Runnable() {
// @Override
// public void run() {
// System.out.println("这是用的正常方法写的线程");
// }
// }).start();
//
// new Thread(() -> System.out.println("这是使用lambda写出来的线程")).start();
// Stream流
// flter过滤
List<String> flterTest = Arrays.asList("avc","bbc","ccb","asdaasd");
List<String> b = flterTest.stream()
.filter(str -> str.contains("b"))
.collect(Collectors.toList());
// System.out.println(b);
// distinct去重
List<String> distinctTest = Arrays.asList("avc","bbc","ccb","asdaasd","bbc");
List<String> collect = distinctTest.stream()
.filter(str -> str.contains("b")) //这一句可以注释掉
.distinct()
.collect(Collectors.toList());
// System.out.println(collect);
// limit 获取元素中的前几个元素
List<String> limitTest = Arrays.asList("avc","bbc","ccb","asdaasd","bbc","avc","avc","dsad","dsad","bbc");
List<String> collect1 = limitTest.stream()
.limit(7)
.distinct()//这一句可以注释掉
.filter(str -> str.contains("a"))//这一句可以注释掉
.collect(Collectors.toList());
// System.out.println(collect1);
// skip获取流中除去前n个元素的其他所有元素
List<String> skipTest = Arrays.asList("avc","bbc","ccb","asdaasd","bbc","avc","avc","dsad","dsad","bbc");
List<String> collect2 = skipTest.stream()
.skip(4)
.limit(4)//这一句可以注释掉
.collect(Collectors.toList());
// System.out.println(collect2);
// 5、map对流中所有元素做统一处理
List<String> mapTest = Arrays.asList("avbc","bbcd","ccb","asdbaasd","bbc","avbc","avc","dsad","dsad","bbc");
List<String> b1 = mapTest.stream()
.map(str -> "zsp" + str)
.filter(str -> str.contains("b"))
.limit(5) //这一句可以注释掉
.distinct()//这一句可以注释掉
.sorted()//这一句可以注释掉
.collect(Collectors.toList());
// System.out.println(b1);
// 6、排序:sorted,默认是升序
List<String> wordTest = Arrays.asList("avbc","bbcd","ccb","asdbaasd","bbc","avbc","avc","dsad","dsad","bbc");
wordTest.stream().sorted().collect(Collectors.toList()).forEach(System.out::println);
// 字母排序是按:首字母排序,然后第二个字母排序。。。
List<Integer> integers = Arrays.asList(21, 3213, 21, 3, 213123, 21, 213);
integers.stream().sorted().collect(Collectors.toList()).forEach(System.out::println);
// 数字排序是升序,按大小排,小的在前面
integers.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList()).forEach(System.out::println);
//降序,在sorted内加上comparator.reverseOrder
}
}