(1)不能自动扩容,如果要自动扩容,还是使用动态的容器吧,比如:
ArrayList[] alist = new ArrayList[2];
这样,alist数组的每一维都是一个动态数组,你只管调用add往里填东西就可以了。
不过动态数组的时间、空间效率都不如固定的数组,毕竟事情都是有两个方面的。使用时看具体的场合了。(2)应该是List s = new ArrayList();大小写不能混淆。
依据就是ArrayList “is a” List,这就是面向对象三要素之一的“继承”性所决定的。
Object o=new ArrayList()
没错,完全可以,只是o既然是个Object类型的引用,那么你也只能调用Object类的方法,如toString等等。如果再想作为ArrayList或者List来用,就要进行向下转型了:
ArrayList alist = (ArrayList)o;
List list = (List)o;
等等。面向对象的思想需要慢慢体会,只要多看,多实践,理解就会不断加深。
ArrayList[] alist = new ArrayList[2];
这样,alist数组的每一维都是一个动态数组,你只管调用add往里填东西就可以了。
不过动态数组的时间、空间效率都不如固定的数组,毕竟事情都是有两个方面的。使用时看具体的场合了。(2)应该是List s = new ArrayList();大小写不能混淆。
依据就是ArrayList “is a” List,这就是面向对象三要素之一的“继承”性所决定的。
Object o=new ArrayList()
没错,完全可以,只是o既然是个Object类型的引用,那么你也只能调用Object类的方法,如toString等等。如果再想作为ArrayList或者List来用,就要进行向下转型了:
ArrayList alist = (ArrayList)o;
List list = (List)o;
等等。面向对象的思想需要慢慢体会,只要多看,多实践,理解就会不断加深。
__________________________________
应该是ArrayList alist = new ArrayList(2);吧Object o=new ArrayList()后,o就只能用Object 的方法
而ArrayList o=new ArrayList();后,o可以用ArrayList的所有方法(包括add,remove等)
(2):list s=new ArrayList(); 属于向上转型!因为list是arraylist的父类,即arraylist继承自list,所以upcasting(向上转型)是没有问题的!
ArrayList[] alist = new ArrayList[2];
__________________________________
应该是ArrayList alist = new ArrayList(2);吧你定义的还是个ArrayList,但楼主现在是需要一个ArrayList数组。
int[][] i = new int[2][2];
int[][] temp = i;
i = new int[temp.length][temp[0].length + 1];//需要为列数扩充时
i = new int[temp.length + 1][temp[0].length];//需要为行数扩充时扩充后把原数祖导回去,再给扩充的单元负上新值就行了~~~
我感觉就是为了符合面向接口编程的思想.
2 相当于一个动态的数组吧,list s=new ArrayList(); java中允许把一个子类向上转型到其父类的类型,执行的时候动态绑定是调用子类还是父类中的方法。
alResult.add(new ArrayList());
在ArrayList()中默认容量是10,之所以动态扩容速度慢,大概是因为要COPY几次才能实现,因此,假如要速度快,我认为只要增加初始容量即可,如new ArrayList(500),那么速度就会快.假如我要初始容量为500,那么ArrayList[]的定义如何下?
2.ArrayList说白了不过是基于Object[]上的操作封装.那么,我们也可建立基于Object[][]的操作封装,就象ArrayList一样?我是刚学编程,在练手的同时,也可建立一个通用的容量,以便以后使用.
但不知如何实现,请高手指点一下?
_______________________________
说的很好啊
如要扩展,可考虑包装模式,jdk中用到很多的