A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 沐子松/kf 中级黑马   /  2014-6-13 11:39  /  1227 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.



2.set 与 list的区别
set:没有顺序且不可以重复
list:有顺序且可以重复
重复是指两个对象互相equals


3.Collection中所定义的方法

int size()   返回大小

boolean isEmpty()   是否为空

boolean contains(Object obj)    是否包含某个对象

boolean add( Object obj)  只能添加对象或者 "string" ,不能add(12122)

boolean remove(Object obj) 删除

boolean containsAll(Collection c )    是否包含另个集合的所有元素

boolean addAll(Collection c )  

boolean removeAll(Collection c )  

boolean ratainAll(Collection c ) 求两个集合的交集

Object[] toArray() 转换成一个对象数组


4.List list = new ArrayList();为什么这样写?
ArrayList list = new ArrayList()时,程序可能调用ArrayList特有的方法,当要更改数据类型时,改成LinkedeList list = new LinkedList(); 那么程序中那些ArrayList的
特有方法不能用了,需要同时更改大量代码
List list = new ArrayList(),此时的list只能访问List中定义的方法,当更改List list= new LinkedList(),程序中用到的方法两种数据类型都可以访问,不需要更改,不会造成修改大量代码的后果


5.容器类对象在调用remove,contains等方法时需要比较对象是否相等,这会涉及到对象类型的equals()与hashcode()方法,对于自定义的类,需要重写这两个方法以实现自定义的对象相等规则,两个对象互相equals必须具有相同的hashcode,hashcode相当于目录索引,指向内存中的某个值


6.Iterator

因为在Iterrator循环的内部,collection被锁定了


7.Collections


8.Comparable

从Collections.sort()衍生一个问题,普通的数据类型可以比较大小,要是自定义的类怎么比较大小?这是就需要定义一个方法来规定类之间大小的比较规则,继承comparable接口,重写CompareTo方法确定该类的排序方式


9.自动打包,解包

在合适的时机自动将基础数据类型转换成对象称为自动打包

反之自动解包

原来:map.put("1",new Interger(1));

现在:map.put("1",1);

注意collection只能添加对象


10.泛型

在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患,强制类型转换很麻烦,我还要事先知道各个Object具体类型是什么,才能做出正确转换。否则,要是转换的类型不对,比如将“Hello Generics!”字符串强制转换为Double,那么编译的时候不会报错,可是运行的时候就挂了

泛型的好处是在编译的时候检查类型安全,增强程序的可读性,不需要强制类型转换,配合自动打包,解包,给程序带来极大便利

泛型使用:(1)--map<String> m = new  HashMap<String>();在定义collection的时候指定 (2) Iterator<String> it = m.Iterator();循环时用Iterator指定,建议两个地方都指定,增加程序可读性,别人一看就知道这个集合中存储的是什么类型的数据

总结泛型的好处:把运行时可能产生的错误,提前到编译期发生,有利于代码的调试


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马