Java JDK 1.8 lambda的用法詳解
更新時間:2019年09月06日 09:29:34 作者:kron_no
這篇文章主要介紹了Java JDK 1.8 lambda的用法詳解,文中給大家提到了jdk 1.8 Lambda 表達式 遍歷數(shù)組的方法,需要的朋友可以參考下
具體代碼如下所示:
public class Student { private String id; private String name; private String age; private String address; public Student(String id, String name, String age, String address) { this.id = id; this.name = name; this.age = age; this.address = address; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "Student{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", age='" + age + '\'' + ", address='" + address + '\'' + '}'; } } public class TestStrean { public static void main(String[] args){ Student stuA = new Student("1", "A", "M", "184"); Student stuB = new Student("2", "B", "G", "163"); Student stuC = new Student("3", "C", "M", "175"); Student stuD = new Student("4", "D", "G", "158"); Student stuE = new Student("5", "E", "M", "175"); List<Student> list = new ArrayList<>(); list.add(stuA); list.add(stuB); list.add(stuC); list.add(stuD); list.add(stuE); /*-----------forEach-----------------------*/ // list.forEach(item -> item.setId(item.getAddress()+"test") ); /*-----------filter-----------------------*/ // List<Student> newList=list.stream().filter(item -> item.getAge().contains("G")).collect(Collectors.toList()); /*-----------filter的復雜應用-----------------------*/ // list.stream().filter(new Predicate<Student>(){ // // @Override // public boolean test(Student student) { // if(student.getName() !=null){ // return student.getName().contains("30"); // }else{ // return true; // } // } // }).collect(Collectors.toList()); /*-----------分頁-----------------------*/ // List<Student> newList=list.stream().skip(4).limit(3).collect(Collectors.toList()); /*-----------map 返回一個新的list<Object>-----------------------*/ // List<Student> newList=list.stream().map(item ->{ // return new Student( // item.getAddress(), // item.getAge(), // item.getName(), // item.getId() // ); // }).collect(Collectors.toList()); /*-----------map 返回一個原來的的list<Student>并賦值-----------------------*/ // List<Student> newList=list.stream().map(item ->{ // item.setId("1"); // return item; // }).collect(Collectors.toList()); /*-----------flatMap-----------------------*/ // List<Student> newList= list.stream().flatMap(item ->{ // String[] split =item.getAddress().split(""); // String[] s2 = (String[]) Arrays.stream(split).filter(s -> s.contains("1")).toArray(); // return s2; // }); /*-----------sorted compareTo排序-----------------------*/ // List<Student> newList=list.stream().sorted((o1,o2)->{ // if(o1.getAddress().equals(o2.getAddress())){ // return Integer.parseInt(o1.getId())-Integer.parseInt(o2.getId()); // }else{ // return o1.getAddress().compareTo(o2.getAddress()); // } // }).collect(Collectors.toList()); /*-----------sorted Comparator排序-----------------------*/ // List<Student> newList=list.stream().sorted( // Comparator.comparing(Student::getAddress).reversed() // ).collect(Collectors.toList()); /*-----------sorted3 多條件排序-----------------------*/ // List<Student> newList=list.stream().sorted( // Comparator.comparing(Student::getAddress).thenComparing(Comparator.comparing(Student::getId).reversed()) // ).collect(Collectors.toList()); // boolean b=list.stream().anyMatch(item -> item.getAge().contains("G")); // System.out.println(b); /*-----------Collector tomap----------------------*/ // Map<String, String> newList=list.stream().sorted( // Comparator.comparing(Student::getAddress).thenComparing(Comparator.comparing(Student::getId).reversed()) // ).collect(Collectors.toMap(Student::getId,Student::getAddress)); /*-----------Collector groupingBy----------------------*/ Map<String, List<Student>> ageMap = list.stream().collect(Collectors.groupingBy(Student::getAddress)); System.out.println(ageMap ); } }
知識點擴展:
jdk 1.8 Lambda 表達式 遍歷數(shù)組
Lambda 表達式可以把回調函數(shù)作為參數(shù)傳遞
常用的遍歷數(shù)組的方式如下
List<String> datas = new ArrayList<>(); //遍歷 datas.forEach(item->{ System.out.println(item); });
說明:
item就是每次遍歷的當前元素
總結
以上所述是小編給大家介紹的Java JDK 1.8 lambda的用法詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
相關文章
解析ConcurrentHashMap: 紅黑樹的代理類(TreeBin)
ConcurrentHashMap是由Segment數(shù)組結構和HashEntry數(shù)組結構組成。Segment的結構和HashMap類似,是一種數(shù)組和鏈表結構,今天給大家普及java面試常見問題---ConcurrentHashMap知識,一起看看吧2021-06-06Springboot整合hibernate validator 全局異常處理步驟詳解
本文分步驟給大家介紹Springboot整合hibernate validator 全局異常處理,補呢文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-01-01Java實現(xiàn)添加,讀取和刪除Excel圖片的方法詳解
本文介紹在Java程序中如何添加圖片到excel表格,以及如何讀取、刪除excel表格中已有的圖片。文中的示例代碼講解詳細,感興趣的可以學習一下2022-05-05