看板 java 關於我們 聯絡資訊
※ 引述《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> 不過實務上請不要塞多層,那會讓維護的人很想砍人 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.38.76.40 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1430976433.A.97F.html
Frozenmouse: ArrayList<ArrayList<ArrayList<ArrayList<String>>> 05/08 08:55
Frozenmouse: > 一行塞不下啦( ゚д゚) 05/08 08:55
chen1025: 用太多層 資料多時 記憶體的使用效率很差 05/08 20:24
Frozenmouse: 我覺得兩層是實務上的極限了,再多真的會想打人XD 05/12 00:04
Frozenmouse: 通常要塞到第二層就要考慮抽出來一個class了… 05/12 00:05
Killercat: 其實塞兩層array取代[][]算是很常見的做法 05/12 13:11
Killercat: C++是這樣幹的(vector<vector<Foo> >), java也是 05/12 13:12
Killercat: 至於三層..hum...這資結真的需要三層以上嗎 該檢討一下 05/12 13:13
Killercat: 不過java沒有C++的typedef 整體看起來相當不賞心悅目 05/12 13:13