Java JDK 1.8 lambda的用法詳解
具體代碼如下所示:
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的復(fù)雜應(yīng)用-----------------------*/
// 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 返回一個(gè)新的list<Object>-----------------------*/
// List<Student> newList=list.stream().map(item ->{
// return new Student(
// item.getAddress(),
// item.getAge(),
// item.getName(),
// item.getId()
// );
// }).collect(Collectors.toList());
/*-----------map 返回一個(gè)原來的的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 );
}
}
知識(shí)點(diǎn)擴(kuò)展:
jdk 1.8 Lambda 表達(dá)式 遍歷數(shù)組
Lambda 表達(dá)式可以把回調(diào)函數(shù)作為參數(shù)傳遞
常用的遍歷數(shù)組的方式如下
List<String> datas = new ArrayList<>();
//遍歷
datas.forEach(item->{
System.out.println(item);
});
說明:
item就是每次遍歷的當(dāng)前元素
總結(jié)
以上所述是小編給大家介紹的Java JDK 1.8 lambda的用法詳解,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
解析ConcurrentHashMap: 紅黑樹的代理類(TreeBin)
ConcurrentHashMap是由Segment數(shù)組結(jié)構(gòu)和HashEntry數(shù)組結(jié)構(gòu)組成。Segment的結(jié)構(gòu)和HashMap類似,是一種數(shù)組和鏈表結(jié)構(gòu),今天給大家普及java面試常見問題---ConcurrentHashMap知識(shí),一起看看吧2021-06-06
Springboot整合hibernate validator 全局異常處理步驟詳解
本文分步驟給大家介紹Springboot整合hibernate validator 全局異常處理,補(bǔ)呢文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01
Spring中屬性注入的幾種方式以及復(fù)雜屬性的注入詳解
這篇文章主要介紹了Spring中屬性注入的幾種方式以及復(fù)雜屬性的注入詳解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
java中實(shí)現(xiàn)分頁的幾種常見方式總結(jié)
在項(xiàng)目中經(jīng)常會(huì)查詢大量數(shù)據(jù),這就要用到分頁展示,下面這篇文章主要給大家介紹了關(guān)于java中實(shí)現(xiàn)分頁的幾種常見方式,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12
猜你不知道Spring Boot的幾種部署方式(小結(jié))
這篇文章主要介紹了猜你不知道Spring Boot的幾種部署方式(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
java項(xiàng)目實(shí)現(xiàn)猜拳小游戲
這篇文章主要為大家詳細(xì)介紹了java項(xiàng)目實(shí)現(xiàn)猜拳小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05
Java實(shí)現(xiàn)添加,讀取和刪除Excel圖片的方法詳解
本文介紹在Java程序中如何添加圖片到excel表格,以及如何讀取、刪除excel表格中已有的圖片。文中的示例代碼講解詳細(xì),感興趣的可以學(xué)習(xí)一下2022-05-05

