java8

`java
import com.sun.istack.internal.Nullable;
import com.sun.xml.internal.xsom.impl.scd.Iterators;
import java.time.LocalDate;
import java.util.*;
import java.util.function.Supplier;
import java.util.stream.Stream;

import static java.util.Optional.ofNullable;

interface Success {
void succ(String string);
}
interface Fail {
void fail(String string);
}

public class Main {

static String test(@Nullable String a) {

    Optional<String> optb = Optional.ofNullable(a);
    String realValue = optb.orElse("NULL");

    return realValue;
}

public static void main(String[] args) {

    String str = test(null);
    System.out.println(str);

    JavaBeans javaBeans = new JavaBeans();
    javaBeans.request((succ)->{

        System.out.println(succ);
    },(fail)->{
        System.out.println(fail);
    });

    String[] listStr = {"1","2","3"};
    Arrays.sort(listStr,String::compareToIgnoreCase);
    System.out.println("Hello World!");

    List<String> strings = new ArrayList<String>();
    Collections.addAll(strings,"1","2","3");
    //

// Person person = new Person();
// String[] stringArray = {“1”,”2”};
//
//// Collections.sort(stringArray, (Comparator) (o1, o2) -> 0);
// Collections.reverse(strings);
Collections.sort(strings, (o1,o2)->{

    int code = o1.hashCode();
    return 2;
});
//Stream是元素的集合
System.out.println(strings);
strings.stream().filter(value->{

    if ( value.isEmpty() == true) {
        return  false;
    }
    return true;
}).map(strs ->{

    return strs+"map";
}).forEach(JavaBeans::setName);

//用 Collectors 来进行 reduction 操作

// Map<Integer,List> personGroups =

//自定义Supplier
Stream<Person> streamPerson = Stream.generate(new Supplier<Person>() {

    @Override
    public Person get() {

        Random seed = new Random();
        Integer randomInt = seed.nextInt(100);
        return new Person("名字" + randomInt.toString(),randomInt.toString());
    }
}).limit(10);

streamPerson.forEach(person -> {

    System.out.println("Supplier::person->"+person.name+ ":" + person.age);
});

//自生成 10 个随机整数
Random seed = new Random();

// int random = seed.nextInt(10);
Supplier random = seed::nextInt;

    Stream.generate(random).limit(10).forEach(value->{
        System.out.println("我是随机数::"+value.toString());
    });
}
//
class PersonSupplier implements Supplier<Person> {

    private int index = 0;
    private Random random = new Random();

    @Override
    public Person get() {
        Integer randomInt = random.nextInt();
        randomInt.toString();
        Stream ss = Stream.generate(random::doubles);
        return new Person(randomInt.toString(),"11");
    }
}

}

//
class JavaBeans implements TestNew {

public String string = "test";

static public int test() {
    return 0;
}
static void setName(String name) {

    System.out.println(name);
}

//
void request(@Nullable Success success,@Nullable Fail fail) {

    if (true) {

        success.succ("闭包回掉:succ");
    } else {

        fail.fail("闭包回掉:fail");
    }
}

@Override
public void testInterface() {
    //
}

}
interface TestNew {

void testInterface();

}
//
class Person {
//
public enum Sex{
MALE,FEMALE
}
String name;
String age;

Person(String name,String age) {

    this.name = name;
    this.age = age;
}

}