package Demo.java3.java的新特性;
import org.junit.jupiter.api.Test;
import java.lang.reflect.Array;
import java.util.*;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public class java8新特性main {
public static void main(String[] args) {
}
}
@FunctionalInterface //查看是否是一个函数值接口就是代表只有一个函数
interface JiekouLambda
{
void abc();
}
class Java8Lambda表达式
{
@Test
void Lambda() //Lambda表达式 减少代码太多 所有匿名对象都可以用Lambda表达式做
{
Runnable r1 = new Runnable() {
@Override
public void run() {
System.out.println("你好中国");
}
};
r1.run();
System.out.println("***********************方式2**********************");
Runnable r2=()-> System.out.println("我爱中国");
r2.run();
System.out.println("***********************举例2.1**********************");
Comparator<Integer> c1=new Comparator<>() {
@Override
public int compare(Integer o1, Integer o2) {
return Integer.compare(o1,o2);
}
};
int i = c1.compare(1, 2);
System.out.println("比较:"+i);
System.out.println("***********************举例2.2**********************");
Comparator<Integer> c3=(o1,o2)->Integer.compare(o1,o2);
int j = c3.compare(1, 2);
System.out.println("比较二:"+j);
System.out.println("***********************举例2.3**********************");
Comparator<Integer> c2=Integer::compare;
int k = c2.compare(1, 2);
System.out.println("比较二:"+k);
}
}
class 测试类StreamApI
{
private int a;
private String b;
private int c;
private double d;
public int getA() {
return a;
}
public String getB() {
return b;
}
public int getC() {
return c;
}
public double getD() {
return d;
}
public 测试类StreamApI(int a, String b, int c, double d) {
this.a = a;
this.b = b;
this.c = c;
this.d = d;
}
@Override
public String toString() {
return "测试类StreamApI{" +
"a=" + a +
", b='" + b + '\'' +
", c=" + c +
", d=" + d +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
测试类StreamApI apI = (测试类StreamApI) o;
return a == apI.a && c == apI.c && Double.compare(apI.d, d) == 0 && b.equals(apI.b);
}
@Override
public int hashCode() {
return Objects.hash(a, b, c, d);
}
}
class StreamAPIaTest
{
List<测试类StreamApI> listText()
{
List<测试类StreamApI> li=new ArrayList();
li.add(new 测试类StreamApI(1001,"张三",12,120.5));
li.add(new 测试类StreamApI(1002,"张四",13,130.6));
li.add(new 测试类StreamApI(1003,"张五",14,140.7));
li.add(new 测试类StreamApI(1004,"张六",15,150.8));
li.add(new 测试类StreamApI(1005,"张七",16,160.9));
return li;
}
@Test
void a1()
{
List l1=listText();
Stream stream = l1.stream();
Stream stream1 = l1.parallelStream();
}
void a2()
{
int[] a={1,2,3,4,5};
IntStream stream = Arrays.stream(a);
}
@Test
void a2_1()
{
Stream<Integer> integerStream = Stream.of(1, 2, 3, 4, 5, 6);
}
@Test
void a3()
{
Stream.iterate(0,t->t+2).limit(10).forEach(System.out::println);
Stream.generate(Math::random).limit(10).forEach(System.out::println);
}
void a5()
{
}
}
class StreamAPI切片和筛选_映射_排序
{
List<测试类StreamApI> listText()
{
List li=new ArrayList();
li.add(new 测试类StreamApI(1001,"吴李张三",12,7000.5));
li.add(new 测试类StreamApI(1002,"李张四",13,6000.6));
li.add(new 测试类StreamApI(1003,"张五",14,2000.7));
li.add(new 测试类StreamApI(1004,"王李张六",15,9876.8));
li.add(new 测试类StreamApI(1005,"张七",16,160.9));
li.add(new 测试类StreamApI(1005,"张七",16,160.9));
li.add(new 测试类StreamApI(1005,"张七",16,160.9));
return li;
}
@Test
void a1() //筛选和切片截断
{
System.out.println("****************筛选*****************");
List<测试类StreamApI> l1 = listText();
Stream<测试类StreamApI> str1 = l1.stream();
str1.filter(e->e.getD()>700.0).forEach(System.out::println);
System.out.println("***************截断******************");
List<测试类StreamApI> l2 = listText();
Stream<测试类StreamApI> st2 = l2.stream();
st2.limit(3).forEach(System.out::println);
System.out.println("**************跳过*******************");
listText().stream().skip(2).forEach(System.out::println);
System.out.println("**************筛选-去重复*******************");
listText().stream().distinct().forEach(System.out::println);
}
@Test
void a2() //映射
{
System.out.println("****************map映射*****************");
List<String> l1 = Arrays.asList("aa", "bb", "cc", "dd", "ee");
l1.stream().map(str->str.toUpperCase()).forEach(System.out::println);
System.out.println("****************map测试二*****************");
List<测试类StreamApI> l2= listText();
Stream<String> nameStream = l2.stream().map(测试类StreamApI::getB);
nameStream.filter(e->e.length()>3).forEach(System.out::println);
l1.stream().<Character>flatMap(StreamAPI切片和筛选_映射_排序::st1).forEach(System.out::println);
}
public static Stream<Character> st1(String a)
{
List l1=new ArrayList();
for (Object obj:a.toCharArray())
{
l1.add(obj);
}
return l1.stream();
}
void a3()
{
List li= Arrays.asList(1,2,3,4,-1,23,1,12);
li.stream().sorted().forEach(System.out::println);
}
}
class StreamAPI匹配_与_查找_收集
{
@Test
void a1() // 匹配
{
StreamAPIaTest st=new StreamAPIaTest();
List<测试类StreamApI> is = st.listText();
boolean b = is.stream().allMatch(e -> e.getD() > 16);
System.out.println(b);
}
void a2()
{
StreamAPIaTest st=new StreamAPIaTest();
List<测试类StreamApI> is = st.listText();
List<测试类StreamApI> collect = is.stream().collect(Collectors.toList());
}
void a3()
{
StreamAPIaTest st=new StreamAPIaTest();
List<测试类StreamApI> is = st.listText();
}
void a4()
{
}
}