解答例 - 実習課題4 - 3.Set
(実習課題4)
実習課題1で作成したコンソール・プログラムを改良しなさい。
- 「HashSet」ではなく「LinkedHashSet」を使用すること。
- 実習課題1・3・4でどのように表示順が変わるか確認する事。
解答例
package com.techscore.utility.chapter3.exercise4; /** * ComparableHuman.java * TECHSCORE Javaユーティリティ3章 実習課題4 * * Copyright (c) 2004 Four-Dimensional Data, Inc. */ public class ComparableHuman extends Human implements Comparable { public ComparableHuman(String name, int age) { super(name, age); } // 年齢を比較する。年齢が同じなら true を返す。 public boolean equals(Human h) { return (this.getAge() == h.getAge()); } // 年齢を比較する。年齢差を返す。 public int compareTo(Object obj) { return (this.getAge() - ((Human) obj).getAge()); } }
package com.techscore.utility.chapter3.exercise4; /** * Human.java * TECHSCORE Javaユーティリティ3章 実習課題4 * * Copyright (c) 2004 Four-Dimensional Data, Inc. */ public class Human { private String name = null; private int age = 0; public Human(String name, int age) { this.name = name; this.age = age; } public String getName() { return (name); } public int getAge() { return (age); } }
package com.techscore.utility.chapter3.exercise4; import java.util.Iterator; import java.util.LinkedHashSet; /** * LinkedHashMapExample.java * TECHSCORE Javaユーティリティ3章 実習課題4 * * Copyright (c) 2004 Four-Dimensional Data, Inc. */ public class LinkedHashSetExample { public static void main(String[] args) { // リンクハッシュセットを初期化する。 LinkedHashSet set = new LinkedHashSet(); // 追加する人のオブジェクトを作成する。 ComparableHuman taro = new ComparableHuman("太郎", 15); ComparableHuman hanako = new ComparableHuman("花子", 12); ComparableHuman jiro = new ComparableHuman("次郎", 13); // リンクハッシュセットにHumanオブジェクトを追加する。 set.add(taro); set.add(hanako); set.add(jiro); // リンクハッシュセットの一覧を表示する。 Iterator i = set.iterator(); while (i.hasNext()) { ComparableHuman h = (ComparableHuman) i.next(); System.out.println("(名前)" + h.getName() + " (年齢)" + h.getAge()); } } }