java 函数作为元素_Java Stream - 如何为流中的每个元素调用其成员方法

import java.time.LocalDate;

import java.time.chrono.IsoChronology;

import java.util.ArrayList;

import java.util.List;

public class Main {

public static void main(String[] args) {

List roster = createRoster();

roster.stream()

.forEach(p -> p.printPerson());

}

public static List createRoster() {

List roster = new ArrayList<>();

roster.add(

new Person(

"Fred",

IsoChronology.INSTANCE.date(1980, 6, 20),

Person.Sex.MALE,

"fred@example.com"));

roster.add(

new Person(

"Jane",

IsoChronology.INSTANCE.date(1990, 7, 15),

Person.Sex.FEMALE, "jane@example.com"));

roster.add(

new Person(

"George",

IsoChronology.INSTANCE.date(1991, 8, 13),

Person.Sex.MALE, "george@example.com"));

roster.add(

new Person(

"Bob",

IsoChronology.INSTANCE.date(2000, 9, 12),

Person.Sex.MALE, "bob@example.com"));

return roster;

}

}

class Person {

public enum Sex {

MALE, FEMALE

}

String name;

LocalDate birthday;

Sex gender;

String emailAddress;

Person(String nameArg, LocalDate birthdayArg,

Sex genderArg, String emailArg) {

name = nameArg;

birthday = birthdayArg;

gender = genderArg;

emailAddress = emailArg;

}

public int getAge() {

return birthday

.until(IsoChronology.INSTANCE.dateNow())

.getYears();

}

public void printPerson() {

System.out.println(name + ", " + this.getAge());

}

public Sex getGender() {

return gender;

}

public String getName() {

return name;

}

public String getEmailAddress() {

return emailAddress;

}

public LocalDate getBirthday() {

return birthday;

}

public static int compareByAge(Person a, Person b) {

return a.birthday.compareTo(b.birthday);

}

}

/*

* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.

*

* Redistribution and use in source and binary forms, with or without

* modification, are permitted provided that the following conditions

* are met:

*

* - Redistributions of source code must retain the above copyright

* notice, this list of conditions and the following disclaimer.

*

* - Redistributions in binary form must reproduce the above copyright

* notice, this list of conditions and the following disclaimer in the

* documentation and/or other materials provided with the distribution.

*

* - Neither the name of Oracle or the names of its

* contributors may be used to endorse or promote products derived

* from this software without specific prior written permission

*

* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS

* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,

* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR

* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR

* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,

* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,

* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR

* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF

* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING

* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS

* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值