转载:https://blog.csdn.net/Fine_Cui/article/details/131913537
public static void main(String[] args) {
List<String> tempList = Arrays.asList("刘一手", "杜子腾", "林大蛋", "Ekko");
List<String> resList = tempList.stream()
.filter(s -> s.contains("大"))
.collect(Collectors.toList());
System.out.println(resList.toString());
}
[林大蛋]
public static void main(String[] args) {
List<String> tempList = Arrays.asList("刘一手", "杜子腾", "林大蛋", "Ekko");
List<String> resList = tempList.stream()
.map(s -> "姓名: " + s)
.collect(Collectors.toList());
System.out.println(resList.toString());
}
@Data
static class Personnel {
private String name;
private List<String> tagList;
public Personnel(String name, List<String> tagList) {
this.name = name;
this.tagList = tagList;
}
}
public static void main(String[] args) {
Personnel personA = new Personnel("张三", Arrays.asList("抽烟", "喝酒", "烫头"));
Personnel personB = new Personnel("李斯", Arrays.asList("编码", "喝酒", "踢足球"));
List<Personnel> personnelList = Arrays.asList(personA, personB);
personnelList.stream()
.flatMap(p -> p.getTagList().stream())
.forEach(s -> System.out.print(s + " "));
}
public class SortedTest {
public static void main(String[] args) {
List<Integer> numList = Arrays.asList(10, 20, 18, 300, 30, 2);
List<Integer> orderList = numList.stream()
.sorted()
.collect(Collectors.toList());
System.out.printf("① 默认排序: %s%n", orderList);
List<Integer> orderDescList = numList.stream()
.sorted((x, y) -> {
return y.compareTo(x);
})
.collect(Collectors.toList());
System.out.printf("② 自定义排序: %s%n", orderDescList);
}
}
public class DistinctStreamTest {
public static void main(String[] args) {
List<Integer> numList = Arrays.asList(1,1,1,1,2,3,2,2);
List<Integer> distinctList = numList.stream()
.distinct()
.collect(Collectors.toList());
System.out.println(distinctList);
}
}
public class LimitStreamTest {
public static void main(String[] args) {
List<Integer> numList = Arrays.asList(1,2,3,4,5,6,7,8);
List<Integer> limitList = numList.stream()
.limit(4)
.collect(Collectors.toList());
System.out.println(limitList);
}
}
public class SkipStreamTest {
public static void main(String[] args) {
List<Integer> numList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);
List<Integer> skipList = numList.stream()
.skip(numList.size() - 2)
.collect(Collectors.toList());
System.out.println(skipList);
}
}
public class PeekStreamTest {
public static void main(String[] args) {
List<Integer> numList = Arrays.asList(5, 6, 7, 8);
List<Integer> resList = numList.stream()
.peek(System.out::println)
.filter(s -> s == 5)
.peek(s -> System.out.printf("过滤后的:%d%n", s))
.collect(Collectors.toList());
}
}
public class ForEachStreamTest {
public static void main(String[] args) {
List<Integer> salaryList = Arrays.asList(12000, 20000, 30000, 4000);
salaryList.stream()
.peek(s -> System.out.print("工资普涨前:" + s))
.map(s -> s + 500)
.forEach(s -> {
System.out.println("--工资普涨后:" + s);
});
}
}
public class CollectStreamTest {
public static void main(String[] args) {
List<User> userList = Arrays.asList(new User("张三", 2000.5),
new User("李斯", 11000.5),
new User("王二", 12000.5),
new User("张六", 32000.5),
new User("赵公子", 1000000.0));
Map<String, Double> userSalaryMap = userList.stream()
.collect(Collectors.toMap(User::getName, User::getSalary));
userSalaryMap.forEach((k, v) -> {
System.out.printf("姓名:%s,工资:%.2f%n", k, v);
});
}
@Data
@AllArgsConstructor
static class User {
private String name;
private Double salary;
}
}
public class ToArrayStreamTest {
public static void main(String[] args) {
IntStream intStream = IntStream.of(1, 2, 3, 4, 5);
int[] intArray = intStream.toArray();
System.out.println(Arrays.toString(intArray));
}
}
public class ReduceStreamTest {
public static void main(String[] args) {
IntStream intStream = IntStream.of(1, 2, 3, 4, 5);
OptionalInt sumOptional = intStream.reduce((a, b) -> a + b);
int sum = sumOptional.orElse(0);
System.out.println("总和: " + sum);
}
}
Optional<T> min(Comparator<? super T> comparator)
Optional<T> max(Comparator<? super T> comparator)
public class MinMaxStreamTest {
public static void main(String[] args) {
Stream<Integer> integerStream = Stream.of(1, 5, 3, 8, 2);
Optional<Integer> minOptional = integerStream.min(Integer::compareTo);
if (minOptional.isPresent()) {
System.out.println("最小值为: " + minOptional.get());
} else {
System.out.println("流为空.");
}
Stream<Integer> newIntegerStream = Stream.of(1, 5, 3, 8, 2);
Optional<Integer> maxOptional = newIntegerStream.max(Integer::compareTo);
if (maxOptional.isPresent()) {
System.out.println("最大值为: " + maxOptional.get());
} else {
System.out.println("流为空.");
}
}
}
public class CountStreamTest {
public static void main(String[] args) {
Stream<Integer> integerStream = Stream.of(1, 5, 3, 8, 2);
long count = integerStream.count();
System.out.println("元素数量: " + count);
}
}
boolean anyMatch(Predicate<? super T> predicate)
boolean allMatch(Predicate<? super T> predicate)
boolean noneMatch(Predicate<? super T> predicate)
public class MatchStreamTest {
public static void main(String[] args) {
Stream<Integer> integerStream = Stream.of(1, 5, 3, 8, 2);
boolean anyGreaterThan5 = integerStream.anyMatch(num -> num > 4);
System.out.println("是否存在元素大于 5 ?" + anyGreaterThan5);
Stream<Integer> newIntegerStream = Stream.of(1, 5, 3, 8, 2);
boolean allLessThan10 = newIntegerStream.allMatch(num -> num < 10);
System.out.println("所有元素都小于10 ? " + allLessThan10);
Stream<Integer> newestIntegerStream = Stream.of(1, 5, 3, 8, 2);
boolean noneEqualTo10 = newestIntegerStream.noneMatch(num -> num == 10);
System.out.println("是否没有元素等于 10 ? " + noneEqualTo10);
}
}
Optional<T> findFirst()
Optional<T> findAny()
public class FindStreamTest {
public static void main(String[] args) {
Stream<Integer> integerStream = Stream.of(1, 5, 3, 8, 2);
Optional<Integer> firstElementOptional = integerStream.findFirst();
if (firstElementOptional.isPresent()) {
System.out.println("发现第一个元素: " + firstElementOptional.get());
} else {
System.out.println("流为空!");
}
Stream<Integer> newIntegerStream = Stream.of(1, 5, 3, 8, 2);
Optional<Integer> anyElementOptional = newIntegerStream.findAny();
if (anyElementOptional.isPresent()) {
System.out.println("找到任意一个元素: " + anyElementOptional.get());
} else {
System.out.println("流为空!");
}
}
}