一、stream filter过滤
List<Integer> numberList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
List<Integer> evenNumbersList = numberList.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
System.out.println(evenNumbersList); //[2, 4, 6, 8, 10]
我们首先创建了一个包含1~10的整数列表(numberList),然后使用.stream()将其转换为一个Stream对象。接着,我们使用.filter()方法过滤出列表中的偶数,并将结果存储在一个新的列表(evenNumbersList)中,最后使用.collect()方法将结果转换回List类型。
可以看到,Stream和Lambda表达式的结合使用,可以更加高效和简洁地实现数据的过滤。
二、stream filter map
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Emily");
List<String> upperCaseNames = names.stream()
.filter(name -> name.startsWith("A"))
.map(String::toUpperCase)
.collect(Collectors.toList());
System.out.println(upperCaseNames); //[ALICE]
这里我们定义了一个包含多个字符串的列表(names),然后使用.filter()方法过滤出以“A”开头的字符串,并使用.map()方法将其转换为大写字母。最终我们得到一个只包含“ALICE”的List。
在这个例子中,使用map()方法返回的结果类型被显式地指定为String类型。
三、stream流的filter
Stream<String> namesStream = Stream.of("Alice", "Bob", "Charlie", "David", "Emily");
Stream<String> upperCaseNamesStream = namesStream.filter(name -> name.startsWith("A"))
.map(String::toUpperCase);
System.out.println(upperCaseNamesStream.collect(Collectors.toList())); //[ALICE]
这个例子中,我们使用Stream.of()方法创建了一个包含多个字符串的流(namesStream)。同样地,使用.filter()方法过滤出以“A”开头的字符串,并使用.map()方法将其转换为大写字母。最终,使用collect()方法将结果转换为List类型。需要注意的是,流只能被消费一次,如果我们尝试在上面的代码中打印upperCaseNamesStream,将会得到一个空的列表。
四、stream的filter方法详解
Stream<Integer> numberStream = Stream.of(1, 2, 3, 4, 5, 6, 7, 8);
Stream<Integer> evenNumbersStream = numberStream.filter(n -> n % 2 == 0);
evenNumbersStream.forEach(n -> System.out.print(n + " ")); //2 4 6 8
在这个例子中,我们使用Stream.of()方法创建了一个包含多个数字的流(numberStream)。然后,我们使用.filter()方法过滤出偶数,并使用.forEach()方法将其打印出来。
需要注意的是,我们没有将结果存储在一个列表中,而是直接将其打印出来。因为Stream是惰性求值的,只有在终止操作(如forEach())被触发时才会执行中间操作(如filter())。
五、list的filter方法
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Emily");
List<String> filteredNames = names.stream()
.filter(name -> name.length() <= 4)
.collect(Collectors.toList());
System.out.println(filteredNames); //[Bob, David, Emily]
这个例子中,我们定义了一个包含多个字符串的列表(names)。使用.stream()方法将其转换为一个Stream对象,接着,使用.filter()方法过滤出长度小于或等于4的字符串,并使用.collect()方法将结果转换为一个新的List对象。
六、stream filter 用法
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Emily");
Predicate<String> startsWithAPredicate = name -> name.startsWith("A");
Predicate<String> lengthLessThanFivePredicate = name -> name.length() < 5;
List<String> filteredNamesWithPredicates = names.stream()
.filter(startsWithAPredicate.and(lengthLessThanFivePredicate))
.collect(Collectors.toList());
System.out.println(filteredNamesWithPredicates); //[Alice]
这个例子中,我们首先定义了两个Predicate对象(startsWithAPredicate和lengthLessThanFivePredicate),分别用于判断字符串是否以“A”开头和长度是否小于5。接着使用.filter()方法将这两个Predicate组合起来,过滤出符合条件的字符串,并使用.collect()方法将结果转换为一个新的List对象。
七、list stream过滤
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);
List<Integer> evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
System.out.println(evenNumbers); //[2, 4, 6, 8]
这个例子中,我们定义了一个包含多个整数的列表(numbers),然后使用.stream()将其转换为一个流对象,再使用.filter()方法过滤出偶数,并使用.collect()方法将结果转换为一个新的List对象。
八、list使用stream过滤数据
List<Person> persons = new ArrayList<>();
persons.add(new Person("Alice", "Female"));
persons.add(new Person("Bob", "Male"));
persons.add(new Person("Charlie", "Male"));
persons.add(new Person("David", "Male"));
persons.add(new Person("Emily", "Female"));
List<Person> females = persons.stream()
.filter(p -> p.getGender().equals("Female"))
.collect(Collectors.toList());
System.out.println(females); //[Person{name='Alice', gender='Female'}, Person{name='Emily', gender='Female'}]
这个例子中,我们首先定义了一个包含多个Person对象的列表(persons)。其中,每一个Person对象包含一个姓名(name)和性别(gender)。我们使用.stream()方法将其转换为一个流对象,接着使用.filter()方法过滤出性别为“Female”的Person对象,并使用.collect()方法将结果转换为一个新的List对象。