作者LaPass (LaPass)
看板java
标题Re: [问题] arraylist里面放string[]会很怪吗
时间Thu May 7 13:27:10 2015
※ 引述《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://webptt.com/cn.aspx?n=bbs/java/M.1430976433.A.97F.html
1F:推 Frozenmouse: ArrayList<ArrayList<ArrayList<ArrayList<String>>> 05/08 08:55
2F:→ Frozenmouse: > 一行塞不下啦( ゚д゚) 05/08 08:55
3F:推 chen1025: 用太多层 资料多时 记忆体的使用效率很差 05/08 20:24
4F:推 Frozenmouse: 我觉得两层是实务上的极限了,再多真的会想打人XD 05/12 00:04
5F:→ Frozenmouse: 通常要塞到第二层就要考虑抽出来一个class了… 05/12 00:05
6F:→ Killercat: 其实塞两层array取代[][]算是很常见的做法 05/12 13:11
7F:→ Killercat: C++是这样干的(vector<vector<Foo> >), java也是 05/12 13:12
8F:→ Killercat: 至於三层..hum...这资结真的需要三层以上吗 该检讨一下 05/12 13:13
9F:→ Killercat: 不过java没有C++的typedef 整体看起来相当不赏心悦目 05/12 13:13