|
@@ -0,0 +1,207 @@
|
|
|
|
+package com.sf.quanrizhi.day02;
|
|
|
|
+
|
|
|
|
+import com.sun.org.apache.bcel.internal.generic.IUSHR;
|
|
|
|
+import org.junit.Test;
|
|
|
|
+
|
|
|
|
+import java.io.PipedOutputStream;
|
|
|
|
+import java.sql.*;
|
|
|
|
+import java.sql.Date;
|
|
|
|
+import java.util.*;
|
|
|
|
+import java.util.function.Function;
|
|
|
|
+import java.util.function.Predicate;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
+import java.util.stream.Stream;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * Stream流操作
|
|
|
|
+ */
|
|
|
|
+public class Te {
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 操作1:对每个元素求平方
|
|
|
|
+ * 操作2:请找出数组中的偶数元素
|
|
|
|
+ * 操作3:对偶数进行升序排序
|
|
|
|
+ * 操作4:打印
|
|
|
|
+ */
|
|
|
|
+ @Test
|
|
|
|
+ public void t1(){
|
|
|
|
+ List<Integer> list = Arrays.asList(4, 1, 2, 3);
|
|
|
|
+ // 1 创建stream流
|
|
|
|
+ Stream<Integer> stream = list.stream();
|
|
|
|
+ // 中间操作
|
|
|
|
+ stream
|
|
|
|
+ .map(e -> e*e)
|
|
|
|
+ .filter(e -> e%2 == 0)
|
|
|
|
+ .sorted()
|
|
|
|
+ .forEach(e -> System.out.println(e));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ public void t2(){ // 4 1 2 3
|
|
|
|
+ Arrays.asList(4, 1,1,4,2, 2, 3).stream().distinct().limit(4).skip(2).map(e -> e*e).filter(e -> e%2 ==0).sorted().forEach(e -> System.out.println(e));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ public void t3(){
|
|
|
|
+ List<String> list = Arrays.asList("i", "love", "money");
|
|
|
|
+ list.stream()
|
|
|
|
+ .map(s->s.toUpperCase())
|
|
|
|
+ .forEach(System.out::println);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ public void t4(){
|
|
|
|
+ List<Integer> list1 = Arrays.asList(1, 2);
|
|
|
|
+ List<Integer> list2 = Arrays.asList(3, 4, 5);
|
|
|
|
+ // 1 把两个集合存入stream流中
|
|
|
|
+ Stream<List<Integer>> listStream = Stream.of(list1, list2);
|
|
|
|
+ // 2 对把两个集合转换成Stream并进行合并
|
|
|
|
+ listStream
|
|
|
|
+ .flatMap(list->list.stream())
|
|
|
|
+ .forEach(System.out::println);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ public void t5(){
|
|
|
|
+ List<Integer> list = Arrays.asList(2, 3, 7, 4, 9, 1);
|
|
|
|
+ list.stream().sorted().forEach(System.out::println);
|
|
|
|
+ }
|
|
|
|
+ @Test
|
|
|
|
+ public void t6(){
|
|
|
|
+ List<Integer> list = Arrays.asList(2, 3, 7, 4, 9, 1);
|
|
|
|
+// list.stream().sorted((o1, o2) -> o2-o1).forEach(System.out::println);
|
|
|
|
+ list.stream().sorted(Comparator.reverseOrder()).forEach(System.out::println);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ public void t7(){
|
|
|
|
+ List<Integer> list = Arrays.asList(1, 2, 1, 3, -1, 2, 4);
|
|
|
|
+ // 获取流种元素的个数
|
|
|
|
+ long count = list.stream().count();
|
|
|
|
+ System.out.println(count);
|
|
|
|
+
|
|
|
|
+ //: 获取给定一个集合中的最大值
|
|
|
|
+ Optional<Integer> max = list.stream().max(Comparator.naturalOrder());
|
|
|
|
+ Integer integer = max.get();
|
|
|
|
+ System.out.println(integer);
|
|
|
|
+
|
|
|
|
+ Integer integer1 = list.stream().min(Comparator.naturalOrder()).get();
|
|
|
|
+ System.out.println(integer1);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ public void t8(){
|
|
|
|
+ List<Integer> list = Arrays.asList(1, 2, 1, 3, 2, 4);
|
|
|
|
+ list.stream().distinct().collect(Collectors.toList());
|
|
|
|
+ list.stream().collect(Collectors.toSet());
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ public void t9(){
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 需求: 把合list进行去重后收集到Map集合中,要求: 元素作为key,元素的平方作为value
|
|
|
|
+ */
|
|
|
|
+ List<Integer> list = Arrays.asList(1, 2, 1, 3, 2, 4);
|
|
|
|
+ Map<Integer, Integer> collect = list.stream().distinct().collect(Collectors.toMap(new Function<Integer, Integer>() {
|
|
|
|
+ @Override
|
|
|
|
+ public Integer apply(Integer integer) {
|
|
|
|
+ return integer;
|
|
|
|
+ }
|
|
|
|
+ }, new Function<Integer, Integer>() {
|
|
|
|
+ @Override
|
|
|
|
+ public Integer apply(Integer integer) {
|
|
|
|
+ return integer * integer;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ ));
|
|
|
|
+ System.out.println(collect);
|
|
|
|
+
|
|
|
|
+ // 转换成lambda表达式
|
|
|
|
+ Map<Integer, Integer> collect1 = list.stream().distinct().collect(Collectors.toMap(integer -> integer, integer -> integer * integer));
|
|
|
|
+ collect1.forEach(((k,v) -> System.out.println("key = "+k +"value = "+v) ));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ public void t10(){
|
|
|
|
+ Integer collect = Arrays.asList(1, 2, 3, 4, 5, 6, 7).stream().map(e -> e * e).collect(Collectors.summingInt(e -> e));
|
|
|
|
+ Double collect1 = Arrays.asList(1, 2, 3, 4, 5, 6, 7).stream().map(e -> e * e).collect(Collectors.summingDouble(e -> e * 1.0));
|
|
|
|
+ Double collectavg = Arrays.asList(1, 2, 3, 4, 5, 6, 7).stream().map(e -> e * e).collect(Collectors.averagingDouble(e -> e * 1.0));
|
|
|
|
+ System.out.println(collectavg);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * jdbc - 添加
|
|
|
|
+ */
|
|
|
|
+ @Test
|
|
|
|
+ public void t11() throws ClassNotFoundException, SQLException {
|
|
|
|
+ //①加载数据库驱动
|
|
|
|
+ Class.forName("com.mysql.jdbc.Driver");
|
|
|
|
+ //②创建数据库连接
|
|
|
|
+ Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc?characterEncoding=utf-8", "root", "root");
|
|
|
|
+ //创建statement对象
|
|
|
|
+ Statement statement = connection.createStatement();
|
|
|
|
+ String sql = "INSERT INTO user (user_name,price,create_time) values ('zhangSan1011',100.12,now())";
|
|
|
|
+ int i = statement.executeUpdate(sql);
|
|
|
|
+ // 影响行数
|
|
|
|
+ System.out.println(i);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ public void t12() throws ClassNotFoundException, SQLException {
|
|
|
|
+ // 1 加载数据库的驱动
|
|
|
|
+ List<User> users = new ArrayList<>();
|
|
|
|
+ Class<?> aClass = Class.forName("com.mysql.jdbc.Driver");
|
|
|
|
+ Connection connection = DriverManager.getConnection("jdbc:mysql:///jdbc?characterEncoding=utf-8", "root", "root");
|
|
|
|
+ Statement statement = connection.createStatement();
|
|
|
|
+ String sql = "select * from user";
|
|
|
|
+ ResultSet resultSet = statement.executeQuery(sql);
|
|
|
|
+ while (resultSet.next()){
|
|
|
|
+ User user = new User();
|
|
|
|
+ int user_id = resultSet.getInt("user_id");
|
|
|
|
+ String user_name = resultSet.getString("user_name");
|
|
|
|
+ double price = resultSet.getDouble("price");
|
|
|
|
+ Date create_time = resultSet.getDate("create_time");
|
|
|
|
+ user.setUserId(user_id);
|
|
|
|
+ user.setUserName(user_name);
|
|
|
|
+ user.setPrice(price);
|
|
|
|
+ user.setCreateTime(create_time);
|
|
|
|
+ users.add(user);
|
|
|
|
+ }
|
|
|
|
+ System.out.println(users);
|
|
|
|
+ }
|
|
|
|
+ // 查询单个信息 自己完成
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ public void t13() throws ClassNotFoundException, SQLException {
|
|
|
|
+ //分页查询
|
|
|
|
+ // 1 加载数据库的驱动
|
|
|
|
+ List<User> users = new ArrayList<>();
|
|
|
|
+ Class<?> aClass = Class.forName("com.mysql.jdbc.Driver");
|
|
|
|
+ Connection connection = DriverManager.getConnection("jdbc:mysql:///jdbc?characterEncoding=utf-8", "root", "root");
|
|
|
|
+ Statement statement = connection.createStatement();
|
|
|
|
+ // 10条 页大小3 第二页的数据
|
|
|
|
+ // offset = (pageNo - 1 ) * pageSize
|
|
|
|
+ String sql = "select * from user limit 3 ,3";
|
|
|
|
+ ResultSet resultSet = statement.executeQuery(sql);
|
|
|
|
+ while (resultSet.next()){
|
|
|
|
+ User user = new User();
|
|
|
|
+ int user_id = resultSet.getInt("user_id");
|
|
|
|
+ String user_name = resultSet.getString("user_name");
|
|
|
|
+ double price = resultSet.getDouble("price");
|
|
|
|
+ Date create_time = resultSet.getDate("create_time");
|
|
|
|
+ user.setUserId(user_id);
|
|
|
|
+ user.setUserName(user_name);
|
|
|
|
+ user.setPrice(price);
|
|
|
|
+ user.setCreateTime(create_time);
|
|
|
|
+ users.add(user);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ System.out.println(users);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+}
|