언제든지 사용할수 있도록 예제 치트시트 만들기 프로젝트
package domain;
public class Person {
private int age;
private String name;
private Gender gender;
public Person(int age, String name, Gender gender) {
this.age = age;
this.name = name;
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Gender getGender() {
return gender;
}
public void setGender(Gender gender) {
this.gender = gender;
}
@Override
public String toString() {
return "Person{" +
"age=" + age +
", name='" + name + '\'' +
", gender=" + gender +
'}';
}
}
public enum Gender {
FEMALE, MALE
}
public class Main {
public static void main(String[] args) {
// 리스트에서 여자만 구하기 + 필터 응용
getSamplePersonList()
.stream()
.filter(person -> person.getGender().equals(Gender.FEMALE))
.forEach(person -> System.out.println(person));
// 나이로 정렬하기 sored 활용!
getSamplePersonList()
.stream()
.sorted(Comparator.comparing(Person::getGender).reversed())
.forEach(person -> System.out.println(person));
//사람들이 전부 20살보다 많은지?
boolean isOrderThan20 = getSamplePersonList()
.stream()
.allMatch(Person -> Person.getAge() > 20);
System.out.println(isOrderThan20);
// 120살 넘은사람이 하나라도 있는지?
boolean isAnyoneOrderThan120 = getSamplePersonList()
.stream().anyMatch(person -> person.getAge() > 120);
System.out.println("isAnyoneOrderThan120" + isAnyoneOrderThan120);
// soheemon이라는 이름을 가진 사람이 없는지?
boolean hasSoheemon = getSamplePersonList()
.stream()
.noneMatch(person -> person.getName().equals("soheemon"));
System.out.println("hasSoheemon -> " + hasSoheemon);
// 나이 가장 많은사람 찾기!
getSamplePersonList()
.stream()
.max(Comparator.comparing(Person::getAge)) // optinal을 반환한다..
.ifPresent(person -> System.out.println(person));
// gender로 groupby 하기. 리스트로 저장 가능.
//Map<Gender, List<Person>> genderGruop
getSamplePersonList()
.stream()
.collect(Collectors.groupingBy(Person::getGender))
.forEach((gender, people) -> {
System.out.println(gender + "---------");
people.stream().forEach(person -> {
System.out.println(person);
});
});
// 나이랑 성별가지고 사람 구하기....
boolean findPerson = getSamplePersonList()
.stream()
.anyMatch((person) -> {
return person.getName().equals("soheemon")
&& person.getGender().equals(Gender.FEMALE);
});
System.out.println("findPerson" + findPerson);
// 가장 나이 많은 여자의 이름 구하기
getSamplePersonList()
.stream()
.max(Comparator.comparing(Person::getAge))
.ifPresent((orderWoman) -> {
System.out.println(orderWoman.getName());
});
}
public static List<Person> getSamplePersonList() {
List<Person> personList = new ArrayList<>();
personList.add(new Person(13, "soheemon", Gender.FEMALE));
personList.add(new Person(12, "babo", Gender.FEMALE));
personList.add(new Person(123, "minso", Gender.MALE));
personList.add(new Person(14, "dubu", Gender.MALE));
return personList;
}
}
'Today I learned' 카테고리의 다른 글
2021 11 20 혼돈의 Optional 훈련 (0) | 2021.11.20 |
---|---|
20201 11 19 - 혼돈의 Optional (0) | 2021.11.19 |
2021 11 18 실무에 어떻게 적용하면 좋을지 궁금한 functional interface (0) | 2021.11.18 |
2021 09 30 - Regex Crossword 패턴 분석을 통한 학습 (0) | 2021.09.30 |
정규표현식을 재미있게 훈련하는 방법 - Regex Crossword (0) | 2021.09.29 |
댓글