Re: [問題] arraylist裡面放string[]會很怪嗎

作者: LaPass (LaPass)   2015-05-07 13:27:10
※ 引述《tnsshnews (tnsshnews)》之銘言:
: 今天看到別人的程式碼在arraylist裡面的class
: 放一個String[], 如下
: ArrayList<String[]> aaa = new ArrayList<String[]>();
: 請問這樣是可以的嗎?
: 會很怪嗎?
: 印象中沒有看過有人這樣寫, 謝謝
這只是好玩 ^.<
ArrayList<ArrayList> a = new ArrayList<>();
ArrayList<ArrayList> b = new ArrayList<>();
ArrayList<ArrayList> c = new ArrayList<>();
ArrayList<String> d = new ArrayList<>();
d.add("HELLO");
c.add(d);
b.add(c);
a.add(b);
String s= (String) ((ArrayList<ArrayList>) a.get(0).get(0)).get(0).get(0);
System.out.println(s);
容器物件(Collection)裡面放的東西其實是 Object
泛型是語法糖,他會在你取出物件時幫你轉形成你尖括弧<>中的型別
像是藍色那個a.get(0) 取出來後會是ArrayList
因為沒指定泛型,所以相當於ArrayList<Object>
亮藍色的.get(0)取出來後是Object,所以還要轉型才會變成 ArrayList<ArrayList>
不過實務上請不要塞多層,那會讓維護的人很想砍人
作者: Frozenmouse (*冰之鼠*)   2015-05-08 08:55:00
ArrayList<ArrayList<ArrayList<ArrayList<String>>>> 一行塞不下啦( ゚д゚)
作者: chen1025 (小陳)   2015-05-08 20:24:00
用太多層 資料多時 記憶體的使用效率很差
作者: Frozenmouse (*冰之鼠*)   2015-05-12 00:04:00
我覺得兩層是實務上的極限了,再多真的會想打人XD通常要塞到第二層就要考慮抽出來一個class了…
作者: Killercat (殺人貓™)   2015-05-12 13:11:00
其實塞兩層array取代[][]算是很常見的做法C++是這樣幹的(vector<vector<Foo> >), java也是至於三層..hum...這資結真的需要三層以上嗎 該檢討一下不過java沒有C++的typedef 整體看起來相當不賞心悅目

Links booklink

Contact Us: admin [ a t ] ucptt.com