黑马程序员技术交流社区

标题: TreeSet集合是线程同步还是不同步? [打印本页]

作者: 齐连涛    时间: 2012-10-20 10:48
标题: TreeSet集合是线程同步还是不同步?
本帖最后由 lhkqlt 于 2012-10-20 11:09 编辑

如题.....   老师好像没提到
作者: 杨政    时间: 2012-10-20 10:58
此实现不同步。如果多个线程同时访问一个 TreeSet,而其中至少一个线程修改了该 set,那么它必须外部同步。
见API.
作者: 王中利    时间: 2012-10-20 11:14
呵呵,集合里只有vecter是同步的,通常的集合都是不同步的。
作者: 廖智    时间: 2012-10-20 11:16
本帖最后由 廖智 于 2012-10-20 11:20 编辑

          集合的技巧掌握:
                     1、是否同步
                      明确具体集合对象名称的后缀:
                                如果后缀是List,都所属于List体系。通常都是非同步的。
                                如果后缀是Set,都属于set体系,通常也是非同步的。
                                这些体系中的其他子类对象,后缀不是所属接口名的,一般都是同步的。比如Vector。
                                因为后期升级主要是为了提高效率,所以一般都是非同步的。
                        
                     2、明确数据结构:
                              对于jdk1.2版本的子类对象。
                              后缀名是所属的体系。
                              前缀名就是数据结构的名称。
                              比如:
                                        ArrayList:看到Array,是数组结构。查询块
                                        LinkedList:看到Link,就要想到链表结构。就要想到add get remove 和 first last结合的方法。增删快。
                                        HashSet:看到hash,就知道是哈希表。查询巨快。而且唯一性。
                                                就要想到元素必须覆盖hashCode方法和equals方法。
                                        TreeSet:看到Tree,就要明确是二叉树,可以对元素排序。
                                                就要想到两种排序方式:
                                                        自然顺序:Comparable接口,覆盖compareTo(一个参数)java.lang
                                                        比较器:Comparator接口,覆盖compare(两个参数);java.util
                                                                判断唯一性的依据就是比较方法的返回结果return 0;
        




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2