OptionalmaxAge = Stream.of(new DemoTest("张三", 12) , new DemoTest("李四", 13) , new DemoTest("王五", 15) , new DemoTest("黑柳", 43) , new DemoTest("白七", 32)).collect(Collectors.maxBy((a1, a2) -> a1.getAge() - a2.getAge())); System.out.println("最大年龄"+maxAge.get());
Min输出:最大年龄DemoTest(name=黑柳, age=43)
OptionalminAge = Stream.of(new DemoTest("张三", 12) , new DemoTest("李四", 13) , new DemoTest("王五", 15) , new DemoTest("黑柳", 43) , new DemoTest("白七", 32)).collect(Collectors.minBy((a1,a2)->a1.getAge()- a2.getAge())); System.out.println("最小年龄"+ minAge.get());
Sum输出:最小年龄DemoTest(name=张三, age=12)
Integer sum = Stream.of(new DemoTest("张三", 12)
, new DemoTest("李四", 13)
, new DemoTest("王五", 15)
, new DemoTest("黑柳", 43)
, new DemoTest("白七", 32)).collect(Collectors.summingInt(s -> s.getAge()));
System.out.println("年龄总和:"+sum);
avg输出:年龄总和:115
val ave = Stream.of(new DemoTest("张三", 12)
, new DemoTest("李四", 13)
, new DemoTest("王五", 15)
, new DemoTest("黑柳", 43)
, new DemoTest("白七", 32)).collect(Collectors.averagingInt(s -> s.getAge()));
System.out.println("平均值:"+ave);
总数输出:平均值:23.0
Long cound = Stream.of(new DemoTest("张三", 12)
, new DemoTest("李四", 13)
, new DemoTest("王五", 15)
, new DemoTest("黑柳", 43)
, new DemoTest("白七", 32)
).filter(s->s.getAge()>13).collect(Collectors.counting());
System.out.println("数量:"+cound);
GroupBy分组输出:年龄大于13数量:3
Stream.of(new DemoTest("张三", 12)
, new DemoTest("李四", 13)
, new DemoTest("王五", 15)
, new DemoTest("黑柳", 43)
, new DemoTest("白七", 32))
.collect(Collectors.groupingBy(DemoTest::getName))
.forEach((k,v)-> System.out.println("k:"+k+"v:"+v));
按照成年未成年分组输出:
k:黑柳v:[DemoTest(name=黑柳, age=43)]
k:李四v:[DemoTest(name=李四, age=13)]
k:张三v:[DemoTest(name=张三, age=12)]
k:王五v:[DemoTest(name=王五, age=15)]
k:白七v:[DemoTest(name=白七, age=32)]
final Map> collect = Stream.of(new DemoTest("张三", 12) , new DemoTest("李四", 13) , new DemoTest("王五", 15) , new DemoTest("黑柳", 43) , new DemoTest("白七", 32)) .collect(Collectors.groupingBy(s -> s.getAge() > 18 ? "成年" : "未成年")); collect.forEach((k,v)-> System.out.println("k:"+k +"v:"+v));
多级分组输出:
k:未成年v:[DemoTest(name=张三, age=12), DemoTest(name=李四, age=13), DemoTest(name=王五, age=15)]
k:成年v:[DemoTest(name=黑柳, age=43), DemoTest(name=白七, age=32)]
先name 后age
final val collect1 = Stream.of(new DemoTest("张三", 12)
, new DemoTest("李四", 18)
, new DemoTest("王五", 15)
, new DemoTest("黑柳", 43)
, new DemoTest("白七", 32)
, new DemoTest("李四", 17))
.collect(Collectors.groupingBy(
DemoTest::getName, Collectors
.groupingBy(
DemoTest
-> DemoTest.getAge()
>= 18 ? "成年" : "未成年")));
collect1.forEach((k,v)-> System.out.println("k:"+k+"v:"+v));
分区操作 false true输出:
k:黑柳v:{成年=[DemoTest(name=黑柳, age=43)]}
k:李四v:{未成年=[DemoTest(name=李四, age=17)], 成年=[DemoTest(name=李四, age=18)]}
k:张三v:{未成年=[DemoTest(name=张三, age=12)]}
k:王五v:{未成年=[DemoTest(name=王五, age=15)]}
k:白七v:{成年=[DemoTest(name=白七, age=32)]}
@Test
void demo06(){
final val map = Stream.of(new DemoTest("张三", 12)
, new DemoTest("李四", 18)
, new DemoTest("王五", 15)
, new DemoTest("黑柳", 43)
, new DemoTest("白七", 32)
, new DemoTest("李四", 17))
.collect(Collectors.partitioningBy(s -> s.getAge() >= 18));
map.forEach((k,v)-> System.out.println("k:"+k+"t"+"v:"+v));
}
拼接 joiningk:false v:[DemoTest(name=张三, age=12), DemoTest(name=王五, age=15), DemoTest(name=李四, age=17)]
k:true v:[DemoTest(name=李四, age=18), DemoTest(name=黑柳, age=43), DemoTest(name=白七, age=32)]
void demo07(){
final String collect = Stream.of(new DemoTest("张三", 12)
, new DemoTest("李四", 18)
, new DemoTest("王五", 15)
, new DemoTest("黑柳", 43)
, new DemoTest("白七", 32)
, new DemoTest("李四", 17))
.map(DemoTest::getName).collect(Collectors.joining("_"));
时间和日期 date输出:张三_李四_王五_黑柳_白七_李四
使用久版想打印制定日期,显示的不是自己想要的
Date date=new Date(2001,8,8);
System.out.println(date);
localdate 日期输出:Sun Sep 08 00:00:00 CST 3901
使用java8 中的 localdate方法 可以是自己打印出自己想要的日期
final LocalDate of = LocalDate.of(2001, 8, 8);
System.out.println(of);
localdate打印当前日期打印:2001-08-08
final LocalDate date1 = LocalDate.now();
System.out.println("打印当前时间:"+date1);
System.out.println("年:"+date1.getYear());
System.out.println("日:"+date1.getDayOfMonth());
System.out.println("星期:"+date1.getDayOfWeek().getValue());
System.out.println("月:"+date1.getMonth().getValue());
localTime 时间
final LocalTime now = LocalTime.now();
System.out.println(now);
localDateTime 日期时间
final LocalTime now = LocalTime.now();
System.out.println(now);
日期时间指定格式
final LocalDateTime now1 = LocalDateTime.now();//创建当前时间
final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");//创建指定格式
final String format = now1.format(dateTimeFormatter);//格式嵌入
System.out.println(format);
计算时间差 Duration 日期差 Period打印:2022-05-15 09:54:14
@Test
void demoBetween(){
//创建当前时间
final val dateTime = LocalTime.now();
//指定时间
final LocalTime time = LocalTime.of(10, 5);
final Duration between = Duration.between(dateTime, time);
System.out.println(between);
}
}
还可以查
打印:PT-28.788S



