首页 > 其他 > 详细

读书笔记-容器深入理解

时间:2014-01-21 15:26:46      阅读:322      评论:0      收藏:0      [点我收藏+]



本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处!


ArrayList底层是由数组支持,而LinkedList是由双向链表实现,因此插入或删除,LinkedList比较合适,查询则用ArrayList,HashSet是查询速度最快的,LinkedHashSet保持插入次序,TreeSet基于TreeMap,生成一个总是处于排序状态的Set。CopyOnWriteArrayList是List的一个实现,专门用于并发编程。


专门用于并发编程的对象还有CopyOnWriteArraySet、ConcurrentMap、ConcurrentHashMap,三者都使用了避免ConcurrentModificationException的技术。另外还有常见的HashTable、Vector和StringBuffer,也是实现类似结构,而避免不同步的现象出现。


对象通过hashCode方法生成的散列码,数组通过散列码找到对象,比较也是以一定规则对散列码进行比较;讲到这里,一个字符串,两者指向的对象一样,则散列码一样,则两者相等,其他对象也是,所以一般如果需要标识对象的不同,需要重写hashCode方法。

HashTable的底层实现方式与HashMap一样,不过它采用安全同步方式存储;LinkedHashMap在插入时要慢一点,因为它维护散列数据结构的同时还要维护链表。Reference主要用来维护大数据,强弱依次如下,SoftReference、WeakReference、PhantomReference,而最后一个依赖于ReferenceQueue,用来回收前做清理工作。调用System.gc就可以将一部分不需要的内存回收。WeakHashMap用来保存WeakReference,允许垃圾回收器自动清理键和值,允许清理的触发条件:不再需要此键。

Java的I/O系统,I/O端源与接收端:文件、控制台、网络链接等,方式:顺序、随机读取、缓冲、二进制、按字符、按字等。File既能代表一个特定文件,又能代表目录下一组文件。InputStream中有ByteArrayInputStream、StringBufferInputStream、FileInputStream、PipedInputStream、SequenceInputStream、FilterInputStream,几乎都对应一个OutputStream。其中比较特殊的要属倒数第三个,作为多线程中数据源。






读书笔记-容器深入理解

原文:http://blog.csdn.net/reboot123/article/details/18551015

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!