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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 范泰洋 高级黑马   /  2012-10-14 01:45  /  1232 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

2、集合的使用技巧
同步与非同步:
        明确具体集合对象名称的后缀,如果后缀是List都所属于List体系,通常是非同步的,如果后缀是Set都所属set体系,通常是非同步的;这些体系的其他子类对象,后缀不是所属接口名的,一般都是同步的。如vector
数据结构:
        前缀是数据结构,后缀是所属体系。
        ArrayList:看到Array,明确是数组结构,查询快。
需要唯一吗?
需要:set
  需要制定顺序吗:
             需要:TreeSet
           不需要:hashset
           但是想要一个和存储一直的顺序(有序):linkedhashset
不需要:list
     选要频繁增删吗:
             需要:linkedlist
           不需要:arraylist
如果记录每一个容器的结构和所属体系呢?
看名字!
List
   Arraylist
   Linkedlist
Set
   Hashset
   Treeset
        后缀名就是该集合所属的体系。
        前缀名技术该集合的数据结构。
看到array:就要想到数组,就要想到查询快,有角标。
看到link:就要想到链表,就要想到增删快,就要想到 add get remove+first last的方法。
看到hash:就要想到哈希表,就要想到唯一性,就要想到hashcode和equals
看到tree:就要想到排序,想到二叉树,就要想到comparable和comparator
通常这些常用的是线程不安全的。
五、泛型
        Jdk1.5出现的安全机制。解决类型安全问题,只能用于编译时期,提高安全性
1、好处
        将运行时期的问题classCastExceptoin转到了编译时期。
        避免了强制转换的麻烦。
2、什么时候用
        当操作的引用数据类型不确定的时候,就使用泛型,将要操作的引用数据类型传入即可,其实<>就是一个用于接收具体引用数据类型的参数范围。
        在程序中,只要用到了带有<>的类或者接口,就要明确传入的引用数据类型。
泛型技术是给编译器使用的技术,用于编译时期,确保了类型的安全。运行时,会将泛型去掉。生成的class问题中是不带泛型的,这个叫泛型的擦除。为什么擦除呢?因为为了兼容运行的类加载器。
        泛型的补偿:下运行时,通过获取元素的类型进行转换动作,不用使用者在强制转换了。
泛型类:什么时候用?当类中的操作的引用数据类型不确定时候,就可以使用泛型类来表示。
当方法静态时,不能访问类上定义的泛型,如果静态方法使用泛型,只能将泛型定义在方法上。写在返回值的前面。
        泛型接口:将泛型定义在接口上。
        泛型的通配符:?未知类型
       
泛型的限定:?extends E--------->接收E类型或者E的子类型。
        ?extends E:接收E类型或者E的子类对象,上限
一般在存储元素的时候都是用上限,因为这样取出都是按照上限类型来运算的,不会出现类型安全隐患。
        ?super E:接收E类型或者E的父类对象,下限
什么时候用下限呢?通常对集合中的元素进行取出操作时。可以用下限。  

评分

参与人数 2技术分 +4 收起 理由
吴培丽老师 + 3
韩军博 + 1 赞一个!

查看全部评分

0 个回复

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