コレクションライブラリの使いかた
勝手に人のコードを添削。いや本当はコメントしようと思ったんだけど、はてなダイアリーだとコメントにソースコード入れると読みにくいかと思ったので、Entry 上げて Trackback。
とりあえず元コードは以下。
- 元エントリ:It’s no use, - TreeMap
Iterator itr = members.keySet().iterator(); while(itr.hasNext()) { String key = (String)itr.next(); Koza tmp5 = (Koza)members.get(key); System.out.println("口座番号:" + tmp5.getNumber() + " 顧客氏名:" + tmp5.getName() + " 残高" + tmp5.getAsset()); }
どうも前後のエントリのコードを見る限り J2SE 5 なので、Generics を使ったほうがいいのではないかってのと、そもそも keySet というより values ですむ問題なので、
TreeMap<String, Koza> members = new TreeMap<String, Koza>(); // put entry to members for (Koza koza : members.values()) { System.out.println("口座番号:" + koza.getNumber() + " 顧客氏名:" + koza.getName() + " 残高:" + koza.getAsset()); }
でいい。key も同時に欲しいなら
for (Map.Entry<String, Koza> entry: members.entrySet()) { }
としておく。あと、どうでもいいけど、残高は asset より balance のほうがいいような(←ほんとうにどうでもいい)。
別解
口座番号で sort したいだけのようにも見えるのだが、それなら別に TreeMap なぞ必要ない。
class Koza implements Comparable<Koza> { // 略 public int compareTo(Koza other) { return getNumber().compareTo(other.getNumber()); } }
としておけば、自力で sort なんか実装しなくても Collections.sort を使って、
ArrayList<Koza> members = new ArrayList<Koza>(); // add entry to members Collections.sort(members); for (Koza koza : members) { // 略 }
で良い。他にも TreeSet を使うという手も有る。