黑马程序员技术交流社区
标题:
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