Stream<T>java
IntStream数组
LongStream函数
DoubleStreamui
经常使用的三种方式:code
使用list对象:对象
Arrays: Arrays.stream( T[] array) − 为数组建立流(能够建立IntStream,LongStream,DoubleStrem)。blog
Stream: Stream.of(T... values) − 为一组同类型的数据建立流。接口
demo:ip
/** * 集合接口有两个方法来生成流: * 按照流的类型可分为串行流和并行流 * stream() − 为集合建立串行流。 * parallelStream() − 为集合建立并行流。 */ private static Stream<String> createStreamFromCollection() { List<String> list = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl"); return list.stream(); } /** * 使用Stream.of()建立流 * @return */ private static Stream<String> createStreamFromValues() { return Stream.of("hello", "alex", "wangwenjun", "world", "stream"); } /** * 使用Arrays.stream()建立流 * 能够生成IntStream,LongStream,DoubleStream * @return */ private static Stream<String> createStreamFromArrays() { String[] strings = {"hello", "alex", "wangwenjun", "world", "stream"}; return Arrays.stream(strings); }
filter : 过滤, 过滤掉不符合条件的数据。rem
map :转换流类型, 返回一个流,该流包含将给定函数应用于该流元素的结果。
好比一个Stream<Map> 类型的流组装后成为Stream<String>的流
limit : 分页。
collect : 将流收集成一个数组。
List<Dish> menu = Arrays.asList( new Dish("pork", false, 800, "肉类"), new Dish("beef", false, 700, "肉类"), new Dish("chicken", false, 400, "肉类"), new Dish("french fries", true, 530, "鱼肉类"), new Dish("rice", true, 350, "鱼肉类"), new Dish("season fruit", true, 120, "鱼肉类"), new Dish("pizza", true, 550, "鱼肉类"), new Dish("prawns", false, 300, "其余"), new Dish("salmon", false, 450, "其余")); //建立菜单流 List<Map<String,Integer>> result = menu.stream().filter(d -> { // 过滤出卡路里大于300的值 System.out.println("filtering->" + d.getName()); return d.getCalories() > 300; }) .map(d -> { Map<String, Integer> map = new HashMap<>(); map.put(d.getName(),d.getCalories()); return map; }) .limit(3) .collect(toList()); System.out.println(result);
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 6, 7, 7, 1); List<Integer> result = list.stream().filter(i -> i % 2 == 0).collect(toList()); System.out.println("i -> i % 2 的值 : "+result); result = list.stream().distinct().collect(toList()); System.out.println("去重 : "+result); result = list.stream().skip(2).collect(toList());//跳过前两个数 System.out.println("跳过 : "+result); result = list.stream().limit(4).collect(toList());//取前4个值 System.out.println("分页 : "+result); System.out.println("循环方式一 : "); list.forEach(i -> System.out.println(i)); System.out.println("循环方式二 : "); list.forEach((Integer i) -> System.out.println(i)); System.out.println("循环方式三 : "); list.forEach(System.out::println); for (int i : list) { System.out.println(i); }
**** 码字不易若是对你有帮助请给个关注****
**** 爱技术爱生活 QQ群: 894109590****