/**
* 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<String> 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<User> 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<Integer ,List<User>> 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<User> 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<Integer, User> 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;
}
}
}
JAVA8 Lambda表達式基礎使用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.