lambda表達式
public class Man {
private String name;
private String id;
private List<Card> cards;
public Man() {
}
public Man(String id, String name, List<Card> cards) {
this.name = name;
this.id = id;
this.cards = cards;
}
@Override
public String toString() {
return "Man{" +
"name='" + name + '\'' +
", id='" + id + '\'' +
", cards=" + cards +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public List<Card> getCards() {
return cards;
}
public void setCards(List<Card> cards) {
this.cards = cards;
}
}
public class Card {
private String name;
private String cardId;
public Card() {
}
public Card(String name, String cardId) {
this.name = name;
this.cardId = cardId;
}
@Override
public String toString() {
return "Card{" +
"name='" + name + '\'' +
", cardId='" + cardId + '\'' +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCardId() {
return cardId;
}
public void setCardId(String cardId) {
this.cardId = cardId;
}
}
public class LambdaDemo {
public static void main(String[] args) {
List<Man> mans = new ArrayList<>();
mans.add(new Man("002", "李四", Arrays.asList(new Card("招商銀行", "6225800002"), new Card("建設銀行", "6227035248"))));
mans.add(new Man("003", "王五", Arrays.asList(new Card("建設銀行", "6227056547"), new Card("中國銀行", "6013832547"), new Card("民生銀行", "4074058542"))));
mans.add(new Man("004", "趙六", Arrays.asList(new Card("工商銀行", "9558832458"), new Card("工商銀行", "9558832547"), new Card("建設銀行", "6227032578"))));
mans.add(new Man("005", "孫七", Arrays.asList(new Card("中國銀行", "6013825847"), new Card("農(nóng)業(yè)銀行", "6228836547"), new Card("招商銀行", "6225014582"))));
mans.add(new Man("006", "張三", Arrays.asList(new Card("工商銀行", "9558832587"), new Card("交通銀行", "6222814578"), new Card("工商銀行", "9558865427"))));
mans.add(new Man("007", "張三", Arrays.asList(new Card("招商銀行", "1158832587"), new Card("交通銀行", "6344814578"), new Card("工商銀行", "2131133133"))));
/**需求1 : 打印所有客戶的名字*/
// for (Man man : mans) {
// System.out.println(man.getName());
// }
//lambda表達式
/*mans.forEach(man ->
System.out.println(man.getName()));*/
/**需求2 : 獲得所有客戶名字的 list 集合*/
/*List<String> names = new ArrayList<>();
for (Man man : mans) {
names.add(man.getName());
}
System.out.println(names.size());
for (String name : names) {
System.out.println(name);
}*/
//lambda 做法
/*List<String> names = mans.stream().map(man -> man.getName()).collect(Collectors.toList());
System.out.println(names.size());
names.forEach(name -> System.out.println(name));*/
/**需求3 : 獲取名字是張三的客戶:*/
/*List<Man> zhangsanLists = mans.stream().filter(man -> man.getName().equals("張三")).collect(Collectors.toList());
zhangsanLists.forEach(man -> System.out.println(man.toString()));*/
/**需求4: 返回客戶id 是007的 對象:*/
/*Man man = mans.stream().filter(man1 -> "007".equals(man1.getId())).findFirst().orElse(null);
System.out.println(man.toString());*/
/*for (Man man : mans) {
if(man.getId().equals("007")){
System.out.println(man.toString());
}
}*/
/**需求5: 獲得名字為 “張三” 客戶的 銀行卡 cards 集合*/
/*List<Card> cards = mans.stream().filter(man -> "張三".equals(man.getName())).flatMap(s -> s.getCards()
.stream()).collect(Collectors.toList());
cards.forEach(card -> System.out.println(card.toString()));*/
/**需求6 :循環(huán)遍歷一個雙列集合:*/
HashMap<Object, Object> map = new HashMap<>();
map.put("1223","223");
map.put("1323","223");
map.forEach((o, o2) -> System.out.println(o+":"+o2));
}
}
- 自己總結(jié):
lambda表達式的使用就是將對象(集合邑闲、數(shù)組...)轉(zhuǎn)換為stream()對象后再根據(jù)自己想要的結(jié)果過濾或者構(gòu)造相應的結(jié)構(gòu)寸潦。