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