This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public void printMemberNameIfPresent(List<Member> members, int memberId) { | |
members.stream() | |
.filter(member -> member.getId() == memberId) | |
.findFirst() | |
.ifPresentOrElse( | |
member -> printMemberFullName(member.getFullName()), // if present, print successful message | |
() -> printNoMemberMessage(memberId) // if absent, print unsuccessful message | |
); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public void printMemberNameIfPresent(List<Member> members, int memberId) { | |
Optional<Member> maybeMember = members.stream() | |
.filter(member -> member.getId() == memberId) | |
.findFirst(); | |
if (maybeMember.isPresent()) { | |
printMemberFullName(maybeMember.get().getFullName()); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public void printMemberNameIfPresent(List<Member> members, int memberId) { | |
members.stream() | |
.filter(member -> member.getId() == memberId) | |
.findFirst() | |
.ifPresent(member -> printMemberFullName(member.getFullName())); // if present, apply the lambda on the value | |
} | |
private static void printMemberFullName(String memberFullName) { | |
System.out.println(String.format("The member's full name is %s", memberFullName)); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public String nameOfActiveMemberById(List<Member> members, int memberId) { | |
Optional<Member> maybeMember = members.stream() | |
.filter(member -> member.getId() == memberId) | |
.findFirst(); | |
if (maybeMember.isPresent() && maybeMember.get().isActive()) { | |
return maybeMember.get().getFullName(); | |
} else { | |
throw new NoActiveMemberException(); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public String nameOfActiveMemberById(List<Member> members, int memberId) { | |
return members.stream() | |
.filter(member -> member.getId() == memberId) // this is stream.filter | |
.findFirst() // gets Optional | |
.filter(Member::isActive) // if present, apply the predicate | |
.map(Member::getFullName) // if the output of predicate is true, get the full name | |
.orElseThrow(NoActiveMemberException::new); // if the output is false, throw an exception | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public String memberNameById(List<Member> members, int memberId) { | |
return members.stream() | |
.filter(member -> member.getId() == memberId) | |
.findFirst() // returns an Optional | |
.map(Member::getName) // transforms the value if present in the Optional | |
.orElse("UNKNOWN"); // if the Optional is absent, it returns a default value | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public String memberNameById(List<Member> members, int memberId) { | |
Optional<Member> maybeMember = members.stream() | |
.filter(member -> member.getId() == memberId) | |
.findFirst(); // returns an Optional | |
if (maybeMember.isPresent()) { | |
return maybeMember.get().getName(); | |
} else { | |
return "UNKNOWN"; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public String memberNameById(List<Member> members, int memberId) { | |
return members.stream() | |
.filter(member -> member.getId() == memberId) | |
.findFirst() // returns an Optional | |
.get() // extracts the value out of the Optional | |
.getName(); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public Member memberById(List<Member> members, int memberId) { | |
List<Member> maybeMembers = members.stream() | |
.filter(member -> member.getId() == memberId) | |
.collect(Collectors.toList()); | |
if (maybeMembers.size() > 0) { | |
return maybeMembers.get(0); | |
} else { | |
return null; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public Member memberById(List<Member> members, int memberId) { | |
return members.stream() | |
.filter(member -> member.getId() == memberId) | |
.collect(Collectors.toList()) | |
.get(0); | |
} |
NewerOlder