Consumer
- java.util.function.Consumer<T> 인터페이스는 제네릭 형식 T 객체를 받아서 void를 반환하는 accept라는 추상 메서드를 정의한다.
- T 형식의 객체를 인수로 받아서 어떤 동작을 수행하고 싶을 때 Consumer 인터페이스를 사용할 수 있다.
- Person 클래스(인터페이스에 들어갈 변수들)
public class Person {
private String firstName;
private String lastName;
private String job;
private String gender;
private int age;
private int salary;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
public Person(String firstName, String lastName, String job, String gender, int age, int salary) {
this.firstName=firstName;
this.lastName=lastName;
this.job=job;
this.gender=gender;
this.age=age;
this.salary=salary;
}
@Override
public String toString() {
return "Developer [name = " + firstName +" "+lastName+", job = "+job+", gender = "
+gender+ ", age = " +age+", salary = " +salary+"]\n";
}
}
- Consumer 예시문
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.function.Consumer;
import java.util.stream.Collectors;
public class JavaTest {
public static Consumer<Person> consumer1() {
return person -> {
String before_job = person.getJob();
String after_job1 = before_job.replace("PHP programmer", ".NET programmer");
// PHP programmer를 .NET programmer로 변경
String after_job2 = before_job.replace("Java programmer", "Python programmer");
// Java programmer를 Python programmer로 변경
person.setJob(after_job1);
person.setJob(after_job2);
System.out.println(after_job1);
System.out.println(after_job2);
};
}
public static Consumer<Person> consumer2() {
return person -> {
String line = person.toString();
//객체를 문자열로 출력
System.out.println(line);
};
}
public static Consumer<Person> consumer3() {
return consumer1().andThen(consumer2());
// consumer1과 consumer2를 순차적으로 실행
}
public static void main(String[] args) {
List<Person> results = new ArrayList<Person>();
results.add(new Person("Elsdon", "Jaycob","Java programmer","male",43,2000));
results.add(new Person("Tamsen", "Brittany","Java programmer","female",23,1500));
results.add(new Person("Floyd", "Donny","Java programmer","male",33,1800));
results.add(new Person("Sindy", "Jonie","Java programmer","female",32,1600));
results.add(new Person("Vere", "Hervey","Java programmer","male",22,1200));
results.add(new Person("Maude", "Jaimie","Java programmer","female",27,1900));
results.add(new Person("Shawn", "Randall","Java programmer","male",30,2300));
results.add(new Person("Jayden", "Corrina","Java programmer","female",35,1700));
results.add(new Person("Palmer", "Dene","Java programmer","male",33,2000));
results.add(new Person("Addison", "Pam","Java programmer","female",34,1300));
results.add(new Person("Jarrod", "Pace","PHP programmer","male",34,1550));
results.add(new Person("Clarette", "Cicely","PHP programmer","female",23,1200));
results.add(new Person("Victor", "Channing","PHP programmer","male",32,1600));
results.add(new Person("Tori", "Sheryl","PHP programmer","female",21,1000));
results.add(new Person("Osborne", "Shad","PHP programmer","male",32,1100));
results.add(new Person("Rosalind", "Layla","PHP programmer","female",25,1300));
results.add(new Person("Fraser", "Hewie","PHP programmer","male",36,1100));
results.add(new Person("Quinn", "Tamara","PHP programmer","female",21,1000));
results.add(new Person("Alvin", "Lance","PHP programmer","male",38,1600));
results.add(new Person("Evonne", "Shari","PHP programmer","female",40,1800));
results.stream().forEach(consumer1());
results.stream().forEach(consumer2());
results.stream().forEach(consumer3());
}
}
- 결과(consumer1)
Java programmer //바꾸기 전
Python programmer //바꾼 후
Java programmer
Python programmer
Java programmer
Python programmer
Java programmer
Python programmer
.NET programmer
PHP programmer
Java programmer
Python programmer
Java programmer
Python programmer
.NET programmer
PHP programmer
.NET programmer
PHP programmer
Java programmer
Python programmer
.NET programmer
PHP programmer
Java programmer
Python programmer
.NET programmer
PHP programmer
Java programmer
Python programmer
.NET programmer
PHP programmer
Java programmer
Python programmer
.NET programmer
PHP programmer
.NET programmer
PHP programmer
.NET programmer
PHP programmer
.NET programmer
PHP programmer
- 결과(consumer2)
Developer [name = Shawn Randall, job = Java programmer, gender = male, age = 30, salary = 2346]
Developer [name = Elsdon Jaycob, job = Java programmer, gender = male, age = 43, salary = 2040]
Developer [name = Palmer Dene, job = Java programmer, gender = male, age = 33, salary = 2040]
Developer [name = Maude Jaimie, job = Java programmer, gender = female, age = 27, salary = 1938]
Developer [name = Evonne Shari, job = PHP programmer, gender = female, age = 40, salary = 1854]
Developer [name = Floyd Donny, job = Java programmer, gender = male, age = 33, salary = 1836]
Developer [name = Jayden Corrina, job = Java programmer, gender = female, age = 35, salary = 1734]
Developer [name = Alvin Lance, job = PHP programmer, gender = male, age = 38, salary = 1648]
Developer [name = Victor Channing, job = PHP programmer, gender = male, age = 32, salary = 1648]
Developer [name = Sindy Jonie, job = Java programmer, gender = female, age = 32, salary = 1632]
Developer [name = Jarrod Pace, job = PHP programmer, gender = male, age = 34, salary = 1596]
Developer [name = Tamsen Brittany, job = Java programmer, gender = female, age = 23, salary = 1530]
Developer [name = Rosalind Layla, job = PHP programmer, gender = female, age = 25, salary = 1339]
Developer [name = Addison Pam, job = Java programmer, gender = female, age = 34, salary = 1326]
Developer [name = Clarette Cicely, job = PHP programmer, gender = female, age = 23, salary = 1236]
Developer [name = Vere Hervey, job = Java programmer, gender = male, age = 22, salary = 1224]
Developer [name = Fraser Hewie, job = PHP programmer, gender = male, age = 36, salary = 1133]
Developer [name = Osborne Shad, job = PHP programmer, gender = male, age = 32, salary = 1133]
Developer [name = Quinn Tamara, job = PHP programmer, gender = female, age = 21, salary = 1030]
Developer [name = Tori Sheryl, job = PHP programmer, gender = female, age = 21, salary = 1030]
- 결과(consumer3)
Java programmer
Python programmer
Developer [name = Shawn Randall, job = Python programmer, gender = male, age = 30, salary = 2346]
Java programmer
Python programmer
Developer [name = Elsdon Jaycob, job = Python programmer, gender = male, age = 43, salary = 2040]
Java programmer
Python programmer
Developer [name = Palmer Dene, job = Python programmer, gender = male, age = 33, salary = 2040]
Java programmer
Python programmer
Developer [name = Maude Jaimie, job = Python programmer, gender = female, age = 27, salary = 1938]
.NET programmer
PHP programmer
Developer [name = Evonne Shari, job = PHP programmer, gender = female, age = 40, salary = 1854]
Java programmer
Python programmer
Developer [name = Floyd Donny, job = Python programmer, gender = male, age = 33, salary = 1836]
Java programmer
Python programmer
Developer [name = Jayden Corrina, job = Python programmer, gender = female, age = 35, salary = 1734]
.NET programmer
PHP programmer
Developer [name = Alvin Lance, job = PHP programmer, gender = male, age = 38, salary = 1648]
.NET programmer
PHP programmer
Developer [name = Victor Channing, job = PHP programmer, gender = male, age = 32, salary = 1648]
Java programmer
Python programmer
Developer [name = Sindy Jonie, job = Python programmer, gender = female, age = 32, salary = 1632]
.NET programmer
PHP programmer
Developer [name = Jarrod Pace, job = PHP programmer, gender = male, age = 34, salary = 1596]
Java programmer
Python programmer
Developer [name = Tamsen Brittany, job = Python programmer, gender = female, age = 23, salary = 1530]
.NET programmer
PHP programmer
Developer [name = Rosalind Layla, job = PHP programmer, gender = female, age = 25, salary = 1339]
Java programmer
Python programmer
Developer [name = Addison Pam, job = Python programmer, gender = female, age = 34, salary = 1326]
.NET programmer
PHP programmer
Developer [name = Clarette Cicely, job = PHP programmer, gender = female, age = 23, salary = 1236]
Java programmer
Python programmer
Developer [name = Vere Hervey, job = Python programmer, gender = male, age = 22, salary = 1224]
.NET programmer
PHP programmer
Developer [name = Fraser Hewie, job = PHP programmer, gender = male, age = 36, salary = 1133]
.NET programmer
PHP programmer
Developer [name = Osborne Shad, job = PHP programmer, gender = male, age = 32, salary = 1133]
.NET programmer
PHP programmer
Developer [name = Quinn Tamara, job = PHP programmer, gender = female, age = 21, salary = 1030]
.NET programmer
PHP programmer
Developer [name = Tori Sheryl, job = PHP programmer, gender = female, age = 21, salary = 1030]
'Java > JAVA8' 카테고리의 다른 글
[JAVA] JDK 다운로드 사이트 (0) | 2023.06.15 |
---|---|
[자바] stream 메서드 (0) | 2021.07.21 |
[자바] 함수형 인터페이스(Function) (0) | 2021.07.18 |
[자바] 함수형 인터페이스(Predicate) (0) | 2021.07.18 |
[자바] 원 반지름을 랜덤으로 선언해 가장 큰 원 넓이 구하기 (0) | 2021.07.01 |