JAVA 8 Lambda式基礎使用
4379 ワード
/**
* JAVA8 Lambda
* GitHub :https://github.com/hack-feng/algorithm
* CSDN :https://blog.csdn.net/qq_34988304/article/details/100920460
* :[email protected]
*/
public class Lambda {
@SuppressWarnings("OptionalGetWithoutIsPresent")
public static void main(String[] args) throws InterruptedException {
System.out.println("-----------------------1、Lambda --------------------------");
//
new Thread(new Runnable() {
@Override
public void run() {
System.out.println(" Lambda ");
}
}).start();
// Lambda
new Thread(() -> System.out.println("Lambda ")).start();
Thread.sleep(100);
System.out.println("-----------------------2、Lambda for --------------------------");
List forTestList = new ArrayList<>();
forTestList.add("a");
forTestList.add("b");
forTestList.add("c");
for (int i = 0; i < forTestList.size(); i++) {
System.out.println(" for " + forTestList.get(i));
}
for (String flag : forTestList) {
System.out.println("forEach " + flag);
}
forTestList.forEach(list -> System.out.println("Lambda " + list));
System.out.println("-----------------------3、Lambda --------------------------");
System.out.println(" :");
List userList = new ArrayList<>();
for (int i = 0; i < 10; i++) {
User user = new User(i, " "+ i, new Random().nextInt(5));
System.out.println(user.toString());
userList.add(user);
}
System.out.println(" age --------------------------------------------------------");
Map> groupMap = userList.stream().collect(Collectors.groupingBy(User::getAge));
for(Map.Entry map : groupMap.entrySet()){
System.out.println(map.getKey() + " " + map.getValue());
}
System.out.println(" age --------------------------------------------------------");
List filerList = userList.stream().filter(list -> list.getAge() == 3).collect(Collectors.toList());
filerList.forEach(list -> System.out.println("age 3 :" + list.toString()));
System.out.println(" age, id ----------------------------------------------------");
userList.sort(Comparator.comparing(User::getAge).thenComparing(User::getId).reversed());
userList.forEach(list -> System.out.println(list.toString()));
System.out.println("list map---------------------------------------------------------------");
Map map = userList.stream().collect(Collectors.toMap(User :: getId, list -> list));
map.forEach((k, v) -> System.out.println("id:" + k + " value:" + v.toString()));
System.out.println(" map value age 3 id-----------------------------------------------");
map.forEach((k, v) -> {
if(v.getAge() == 3){
System.out.println("age 3 id :" + k);
}
});
System.out.println(" -------------------------------------------------------");
Integer maxId = userList.stream().map(User::getId).max(Integer::compareTo).get();
System.out.println(" id :" + maxId);
Integer minId = userList.stream().map(User::getId).min(Integer::compareTo).get();
System.out.println(" id :" + minId);
}
// User ,
static class User{
private Integer id;
private String name;
private Integer age;
User(Integer id, String name, Integer age){
this.id = id;
this.name = name;
this.age = age;
}
Integer getId() {
return id;
}
Integer getAge() {
return age;
}
public String toString(){
return "id="+this.id + ",name="+this.name+",age="+this.age;
}
}
}