网络通信 频道

丢了也不怕!如何让移动设备守口如瓶

四、选择实现
 
    现在你应该知道了,实际上只有三种容器组件:Map,List和Set,但是每个组件又有多种实现,那我们用到这些组件时,应该选择哪种实现呢?

    其实容器与容器之间的差别,真正的原因在于其实现,说明白点就是实现Interface的数据结构是什么。像类系图所示的ArrayList和LinkedList都是List的实现,所以无论那个基本功能都是一样的,但是ArrayList背后是数组,而LinkedList是所谓的双向链表,每个对象除了保存数据之外,还要保存它前面和后面对象的reference,所以你要在List中间做很多插入和删除操作的话,LinkedList就比较适合。

    Set也有HashSet,TreeSet和LinkedHashSet三个实现,HashSet是我们通常所用的set, LinkedHashSet会按照插入的顺序保存对象,而TreeSet背后是TreeMap,因此能够提供恒定有序的Set,大多数情况下HashSet就够用了。

    Map同样也有HashMap,TreeMap,LinkedHashMap等多个实现,如果我们自己写一个测试这几个实现的性能的类的话,你就会发现HashMap比TreeMap,LinkedHashMap都要快,但是TreeMap还有一个特殊的用处,保存一个有序的列表,因为树总是有序的,所以用不着为它作排序,往TreeMap里填满pair后,你就能用KeySet()获取这个Map的键的Set了,接下来用toArray()把这Set转化为数组,然后用Array的static方法binarySearch()在这个有序的数组里进行快速查找对象了。总之,要根据不同的情况,使用相应的容器。

    Java的容器虽说有点复杂,但是还只值得大家去好好的研究下。熟练的使用容器组建,能使我们得编程更具有灵活性了。

0
相关文章