package com.example.demo.service;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.junit.Test;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class TestMain {
@Test
public void stringToIntMap() {
List<String> ids = Arrays.asList("205", "105", "308", "469", "627", "193", "111");
List<User> results = ids.stream()
.map(id -> {
User user = new User(Integer.parseInt(id));
return user;
})
.collect(Collectors.toList());
System.out.println(results);
}
@Test
public void stringToIntFlatmap() {
List<String> sentences = Arrays.asList("hello world", "Jia Gou Wu Dao");
List<String> results = sentences.stream()
.flatMap(sentence -> Arrays.stream(sentence.split(" ")))
.collect(Collectors.toList());
System.out.println(results);
}
@Test
public void testGetTargetUsers() {
List<String> ids = Arrays.asList("205", "10", "308", "49", "627", "193", "111", "193");
List<User> results = ids.stream()
.filter(s -> s.length() > 2)
.distinct()
.map(Integer::valueOf)
.sorted(Comparator.comparingInt(o -> o))
.limit(3)
.map(id -> new User(id))
.collect(Collectors.toList());
System.out.println(results);
}
@Test
public void testSimpleStopOptions() {
List<String> ids = Arrays.asList("205", "10", "308", "49", "627", "193", "111", "193");
System.out.println(ids.stream().filter(s -> s.length() > 2).count());
System.out.println(ids.stream().filter(s -> s.length() > 2).anyMatch("205"::equals));
ids.stream().filter(s -> s.length() > 2)
.findFirst()
.ifPresent(s -> System.out.println("findFirst:" + s));
}
@Test
public void testHandleStreamAfterClosed() {
List<String> ids = Arrays.asList("205", "10", "308", "49", "627", "193", "111", "193");
Stream<String> stream = ids.stream().filter(s -> s.length() > 2);
System.out.println(stream.count());
System.out.println("-----下面会报错-----");
try {
System.out.println(stream.anyMatch("205"::equals));
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("-----上面会报错-----");
}
@Test
public void testCollectStopOptions() {
List<User> ids = Arrays.asList(new User(17), new User(22), new User(23));
List<User> collectList = ids.stream().filter(dept -> dept.getId() > 20)
.collect(Collectors.toList());
System.out.println("collectList:" + collectList);
Set<User> collectSet = ids.stream().filter(dept -> dept.getId() > 20)
.collect(Collectors.toSet());
System.out.println("collectSet:" + collectSet);
Map<Integer, User> collectMap = ids.stream().filter(dept -> dept.getId() > 20)
.collect(Collectors.toMap(User::getId, dept -> dept));
System.out.println("collectMap:" + collectMap);
}
@Test
public void testCollectJoinStrings() {
List<String> ids = Arrays.asList("205", "10", "308", "49", "627", "193", "111", "193");
String joinResult = ids.stream().collect(Collectors.joining(","));
System.out.println("拼接后:" + joinResult);
}
@Test
public void testNumberCalculate() {
List<Integer> ids = Arrays.asList(10, 20, 30, 40, 50);
Double average = ids.stream().collect(Collectors.averagingInt(value -> value));
System.out.println("平均值:" + average);
IntSummaryStatistics summary = ids.stream().collect(Collectors.summarizingInt(value -> value));
System.out.println("数据统计信息: " + summary);
}
}
@Data
@AllArgsConstructor
class User {
private int id;
}