今年の九月九日に Java8 がリリースされる予定なのでいろいろネットで情報をGETしては解らないまま動かして遊んでいます。
ということで、またもやグッドな情報源を得たのでそれを元にいろいろ動かして自己満足しようとします。( ̄。 ̄;)
情報源は英語なので詳しいことは解りません。
ただ「門前の小僧習わぬ経を読む」のようにひたすらサンプルを拾い集めて Java8 のリリースまでに少しでも新機能に馴染んでいこうと思います。
よって、詳しい解説(簡単な解説も)はありません。
まだ仕様が確定している訳ではないし、バグもたくさんあるでしょうから忙しい人はわざわざ正式リリース前のものに時間を費やす必要はないでしょう。
私は新しいモノ好きなので解らなくても触ってみたい性分なので突っ走ります。
今回のコードは次のようになります。
| mylambdaexamples\MyLambdaExamples.java |
package mylambdaexamples;
import java.time.LocalDate;
import java.util.LinkedHashSet;
import java.util.stream.Stream;
import static java.util.Arrays.asList;
public class MyLambdaExamples {
public static void main(String[] args) {
// Person 表示
System.out.println("\n<-- Person 表示 -->");
persons.forEach((e) -> {
e.printPerson();
});
}
// Persons
private static final Person kyouhei = new Person("柴田", "恭平", LocalDate.of(1951, 8, 18), Person.Sex.MALE);
private static final Person mitsu = new Person("壇", "蜜", LocalDate.of(1980, 12, 3), Person.Sex.FEMALE);
private static final Person keiko = new Person("北川", "景子", LocalDate.of(1986, 8, 22), Person.Sex.FEMALE);
private static final Person haruka = new Person("綾瀬", "はるか", LocalDate.of(1985, 3, 24), Person.Sex.FEMALE);
private static final Person nozomi = new Person("佐々木", "希", LocalDate.of(1988, 2, 8), Person.Sex.FEMALE);
private static final Person ayame = new Person("剛力", "彩芽", LocalDate.of(1992, 8, 27), Person.Sex.FEMALE);
private static final Person syun = new Person("小栗", "旬", LocalDate.of(1982, 12, 26), Person.Sex.MALE);
private static final Person maki = new Person("堀北", "真希", LocalDate.of(1988, 10, 6), Person.Sex.FEMALE);
private static final Person saki = new Person("武井", "咲", LocalDate.of(1993, 12, 25), Person.Sex.FEMALE);
private static final Person hayato = new Person("市原", "隼人", LocalDate.of(1987, 2, 6), Person.Sex.MALE);
private static final Person kyouko = new Person("深田", "恭子", LocalDate.of(1982, 11, 2), Person.Sex.FEMALE);
// Wristwatches
private static final Wristwatch rolex = new Wristwatch("ロレックス", "プレシジョン", 1_950, 800_000);
private static final Wristwatch cartier = new Wristwatch("カルティエ", "マストタンク", 1_980, 500_000);
private static final Wristwatch tiffany = new Wristwatch("ティファニー", "ポーセリン", 1_920, 1_500_000);
private static final Wristwatch tudor = new Wristwatch("チュードル", "カメレオン", 1_960, 650_000);
private static final Wristwatch omega = new Wristwatch("オメガ", "ダイナミックデビル", 1_960, 600_000);
// Sales
private static final Sale kyouhei_From_mitsu = new Sale(kyouhei, mitsu, rolex, 400_000);
private static final Sale keiko_From_haruka = new Sale(keiko, haruka, cartier, 250_000);
private static final Sale nozomi_From_ayame = new Sale(nozomi, ayame, tudor, 330_000);
private static final Sale maki_From_syun = new Sale(maki, syun, omega, 300_000);
private static final Sale kyouko_From_hayato = new Sale(kyouko, hayato, tiffany, 1_000_000);
private static final Sale kyouko_From_saki = new Sale(kyouko, saki, tiffany, 900_000);
private static final Sale kyouko_From_keiko = new Sale(kyouko, keiko, cartier, 200_000);
private static final Sale kyouko_From_haruka = new Sale(kyouko, haruka, rolex, 300_000);
private static final Sale kyouhei_From_haruka = new Sale(kyouko, haruka, tiffany, 800_000);
private static final Sale saki_From_haruka = new Sale(saki, haruka, omega, 300_000);
private static final Sale haruka_From_kyouko = new Sale(haruka, kyouko, tudor, 400_000);
// Collections
private static final Stream persons = new LinkedHashSet<>(asList(
kyouhei,
mitsu,
keiko,
haruka,
nozomi,
ayame,
syun,
maki,
saki,
hayato,
kyouko)).stream();
private static final Stream wristwatches = new LinkedHashSet<>(asList(
rolex,
cartier,
tiffany,
tudor,
omega)).stream();
private static final Stream sales = new LinkedHashSet<>(asList(
kyouhei_From_mitsu,
keiko_From_haruka,
nozomi_From_ayame,
maki_From_syun,
kyouko_From_hayato,
kyouko_From_saki,
kyouko_From_keiko,
kyouko_From_haruka,
kyouhei_From_haruka,
saki_From_haruka,
haruka_From_kyouko)).stream();
}
| mylambdaexamples\Person.java |
package mylambdaexamples;
import java.time.LocalDate;
import java.time.Period;
public class Person {
public enum Sex {
MALE, FEMALE
}
String firstName;
String lastName;
LocalDate birthday;
Sex gender;
public Person(String firstName, String lastName, LocalDate birthday, Sex gender) {
this.firstName = firstName;
this.lastName = lastName;
this.birthday = birthday;
this.gender = gender;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public Sex getGender() {
return gender;
}
public int getAge() {
return Period.between(birthday, LocalDate.now()).getYears();
}
void printPerson() {
System.out.println(firstName + " " + lastName + ", " + this.getAge() + "歳" + ", Gender: "
+ this.getGender());
}
}
| mylambdaexamples\Sale.java |
package mylambdaexamples;
public class Sale {
Person buyer;
Person seller;
Wristwatch wristwatch;
double cost;
public Sale(Person buyer, Person seller, Wristwatch wristwatch, double cost) {
this.buyer = buyer;
this.seller = seller;
this.wristwatch = wristwatch;
this.cost = cost;
}
public Person getBuyer() {
return buyer;
}
public Person getSeller() {
return seller;
}
public Wristwatch getWristwatch() {
return wristwatch;
}
public double getCost() {
return cost;
}
}
| mylambdaexamples\Wristwatch.java |
package mylambdaexamples;
public class Wristwatch {
String brand;
String model;
int year;
double originalTalue;
public Wristwatch(String brand, String model, int year, double originalTalue) {
this.brand = brand;
this.model = model;
this.year = year;
this.originalTalue = originalTalue;
}
public String getBrand() {
return brand;
}
public String getModel() {
return model;
}
public int getYear() {
return year;
}
public double getOriginalTalue() {
return originalTalue;
}
}
長くてすみません。(゚゚)(。。)ペコッ
今日は Person オブジェクトの要素を全て表示させてみます。
えっ、ちょっと前に同じようなの見たって?
気のせいです!(>_<)
まぁ、慣れるために何回でも・・・
// Person 表示
System.out.println("\n<-- Person 表示 -->");
persons.forEach((e) -> {
e.printPerson();
});
forEach を使って Person オブジェクトの全要素を表示してます。
実行結果は次のようになります。
<– Person 表示 –>
柴田 恭平, 61歳, Gender: MALE
壇 蜜, 32歳, Gender: FEMALE
北川 景子, 26歳, Gender: FEMALE
綾瀬 はるか, 28歳, Gender: FEMALE
佐々木 希, 25歳, Gender: FEMALE
剛力 彩芽, 20歳, Gender: FEMALE
小栗 旬, 30歳, Gender: MALE
堀北 真希, 24歳, Gender: FEMALE
武井 咲, 19歳, Gender: FEMALE
市原 隼人, 26歳, Gender: MALE
深田 恭子, 30歳, Gender: FEMALE
とても素敵ですね。(^_^)
次回はこれをベースに何かします(ヲヒ
続きは Web で!