Java ArrayListとListの違いって何?って言ってる奴って何?



あとHashMapとMap、HashSetとSetの違いな(´・ω・`)



答えからいうと

ArrayListはクラス、Listはインターフェース(´・ω・`)

HashMapはクラス、Mapはインターフェース(´・ω・`)

HashSetはクラス、Setはインターフェース(´・ω・`)



これで納得しない人は多分インターフェース(interface)の意味を全くわかってないんだよ( ゚д゚ )





ArrayListとListで説明すると


配列クラスはArrayListクラスだけでなく、
LinkedList
RoleList
ListResultBean

などがあるんだよ(・∀・)



んでそいつらをまとめてくれるのがListだ(・∀・)



たとえば

ArrayList list1 = new ArrayList<>();
RoleList list2 = new RoleList<>();
ListResultBean list3 = new ListResultBean<>();





List list1 = new ArrayList<>();
List list2 = new RoleList<>();
List list3 = new ListResultBean<>();


ってできるんだよ(´・ω・`)



だから何って?( ゚д゚ )





ぢゃあこれで共通関数とか使うときのメソッドの引数で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 件のコメント:

コメントを投稿