Javaのお勉強その18
- NavigableSetとTreeSet
TreeSetはNavigableSetを実装したものである。TreeSetに格納されるデータは自然順序付けによってソートされている。順序付けのないものにはComparableを実装するか、Comparatorを渡して順序付ける。
- NavigableMapとTreeMap
TreeMapはNavigableMapを実装したものである。TreeMapに格納されるデータは自然順序付けによってソートされている。順序付けのないものにはComparableを実装するか、Comparatorを渡して順序付ける。
- ジェネリックス
以下のコードはすべてコンパイルはできる。
ArrayList a1 = new ArrayList(); ArrayList
a2 = new ArrayList (); ArrayList a3 = new ArrayList (); ArrayList a4 = new ArrayList(); a1は古い書き方、リストに入れるときの型に注意が必要。a2は現在のJavaの書き方。安全。a3は型が定まらないので、String str = (String)a3.get(0);のようなキャストが必要になる。getで戻す型はObjectである。a4はStringとそのサブクラスしか入れられない。
関数の引数にリストを渡す場合、int method(List
list){ ... }のような書き方がある。
class Super{ ... } class Sub extends Super { ... }
に対して、以下のようにすると、a1にはSuper、Subのどちらのオブジェクトも格納できる。
ArrayList<super> a1 = new ArrayList<super>;
Super[] a1 = new Sub[10]; // エラーにならない ArrayList<super> a1 = new ArrayList<sub>(); // エラーになる // Superかそのサブクラスのコレクションを参照する変数 // 要素の追加ができない ArrayList<? extends Super> a2 = new AraryList<sub>(); // OK // Subかそのスーパークラスのコレクションを参照する変数 // 要素の追加はできる ArrayList<? super Sub> a3 = new ArrayList<super>(); // OK
0 件のコメント:
コメントを投稿