あとHashMapとMap、HashSetとSetの違いな(´・ω・`)
答えからいうと
ArrayListはクラス、Listはインターフェース(´・ω・`)
HashMapはクラス、Mapはインターフェース(´・ω・`)
HashSetはクラス、Setはインターフェース(´・ω・`)
これで納得しない人は多分インターフェース(interface)の意味を全くわかってないんだよ( ゚д゚ )
ArrayListとListで説明すると
配列クラスはArrayListクラスだけでなく、
LinkedList
RoleList
ListResultBean
などがあるんだよ(・∀・)
んでそいつらをまとめてくれるのがListだ(・∀・)
たとえば
ArrayList
RoleList
ListResultBean
を
List
List
List
ってできるんだよ(´・ω・`)
だから何って?( ゚д゚ )
ぢゃあこれで共通関数とか使うときのメソッドの引数でArrayListとか使いたいとこうなる(´・ω・`)
void test(String str, ArrayList list);
ってなる。
これだとRoleList、ListResultBeanも使えないので更に2つのメソッドが必要になる
void test(String str, RoleList list);
void test(String str, ListResultBean list);
これだとtestの処理はだいたい一緒なのに同じメソッドを3つ作ることになる(´・ω・`)
これめんどくさいよな?(´・ω・`)
うち「ArrayListしか使わねーよ。(゚д゚)バーカ」
っていう人はここでブラウザバック押して帰ってくれ( ゚д゚ )
ぢゃあこれをListでやるとどうなるかというと(´・ω・`)
void test(String str, List list);
これだけで
ArrayList
LinkedList
RoleList
ListResultBean
全部使えるんだよ(´・ω・`)
public void hoge() {
String str = "ほげー"
ArrayList list1 = new ArrayList<>();
RoleList list2 = new RoleList<>();
ListResultBean list3 = new ListResultBean<>();
// テスト呼び出し
test(str, list1);
// エラー
test(str, list2);
// エラー
test(str, list3);
}
void test(String str, ArrayList list) {
// 処理
}
このプログラムがListを使うことで
public void hoge() {
String str = "ほげー"
ArrayList list1 = new ArrayList<>();
RoleList list2 = new RoleList<>();
RoleList list3 = new ListResultBean<>();
// テスト呼び出し
test(str, list1);
// テスト呼び出し
test(str, list2);
// テスト呼び出し
test(str, list3);
}
void test(String str, List list) {
// 処理
}
ってなるからね(*´ω`*)
ArrayListもRoleListもRoleListもみんなみんなListで幸せになれるね(*´ω`*)
[LinkedList] < ぼくもいるよ~~~(泣)
0 件のコメント:
コメントを投稿