类似于wordpress的网站,公司管理系统网站模板下载,自己建的网站打开的特别慢,织梦后台怎么建设网站目录
一、TreeSet基本介绍
二、TreeSet核心方法
三、TreeSet排序方法
四、TreeSet源码解析
1.无参构造时#xff0c;底层是创建TreeMap对象
2.有参构造时#xff0c;底层也创建TreeMap对象
3.执行add方法
4.执行put方法 一、TreeSet基本介绍 TreeSet是 Java 集合框架…目录
一、TreeSet基本介绍
二、TreeSet核心方法
三、TreeSet排序方法
四、TreeSet源码解析
1.无参构造时底层是创建TreeMap对象
2.有参构造时底层也创建TreeMap对象
3.执行add方法
4.执行put方法 一、TreeSet基本介绍 TreeSet是 Java 集合框架中的一个有序集合类其底层实现主要依赖于红黑树Red-Black Tree这一数据结构TreeSet的底层是通过TreeMap实现的当我们使用无参构造器创建TreeSet时仍然是无序的如果希望添加的元素按照字符串大小来排序使用TreeSet 提供的一个构造器可以传入一个比较器(匿名内部类)并指定排序规则 二、TreeSet核心方法 add(E e)向TreeSet中添加一个元素。如果元素已经存在则不会添加该元素并返回false否则添加元素并返回true。remove(Object o)从TreeSet中移除一个元素。如果元素存在则移除该元素并返回true否则返回false。contains(Object o)检查TreeSet是否包含指定的元素。如果包含则返回true否则返回false。size()返回TreeSet中元素的数量。isEmpty()检查TreeSet是否为空。如果为空则返回true否则返回false。first()返回TreeSet中的第一个元素即最小的元素。如果TreeSet为空则抛出NoSuchElementException异常。last()返回TreeSet中的最后一个元素即最大的元素。如果TreeSet为空则抛出NoSuchElementException异常。headSet(E toElement)返回一个视图该视图包含小于指定元素的元素。这个视图是TreeSet的一个子集合对原TreeSet的修改会影响这个视图反之亦然。tailSet(E fromElement)返回一个视图该视图包含大于或等于指定元素的元素。这个视图同样是TreeSet的一个子集合。subSet(E fromElement, E toElement)返回一个视图该视图包含从指定起始元素包括到指定结束元素不包括之间的元素。这个视图也是TreeSet的一个子集合。 三、TreeSet排序方法
public class TreeSet_ {public static void main(String[] args) {// 默认排序无序TreeSet treeSet new TreeSet();// [a, jack, marry, rose, tom]// 按照字符从小到大排序TreeSet treeSet new TreeSet((o1, o2) - ((String) o1).compareTo((String) o2));// [a, jack, marry, rose, tom]// 按照字符从大到小排序TreeSet treeSet new TreeSet((o1, o2) - ((String) o2).compareTo((String) o1));// [tom, rose, marry, jack, a]// 按照长度从小到大排序TreeSet treeSet new TreeSet((o1, o2) - (((String) o1).length()) - (((String) o2).length()));// [a, tom, jack, marry]// 按照长度从大到小排序TreeSet treeSet new TreeSet((o1, o2) - (((String) o2).length())-(((String) o1).length()));// [marry, jack, tom, a]/*这个比较器会计算两个字符串 o1 和 o2 的长度差并返回这个差值作为比较结果。如果结果为负数则 o1 被认为小于 o2如果结果为正数则 o1 被认为大于 o2如果结果为0则两个元素相等但在 TreeSet 中相等的元素只会被存储一个。分析添加到 TreeSet 中的字符串jack长度为4tom长度为3rose长度为4marry长度为5a长度为1根据比较器的逻辑这些字符串会被按照长度排序。由于 jack 和 rose 长度相同都是4它们在排序时被认为是相等的。但是TreeSet 不允许存储重复的元素因此尽管 jack 和 rose 内容不同但由于长度相同在添加到 TreeSet 时rose 会被视为与已存在的 jack 相等并且不会被添加进去。这就是为什么在遍历 TreeSet 时rose 没有出现的原因。*/// 区分长度相同但内容不同的字符串TreeSet treeSet new TreeSet((o1, o2) - {int lengthComparison Integer.compare(((String) o1).length(), ((String) o2).length());if (lengthComparison ! 0) {return lengthComparison;} else {return ((String) o1).compareTo(((String) o2));}});// [a, tom, jack, rose, marry]treeSet.add(jack);treeSet.add(tom);treeSet.add(rose);treeSet.add(marry);treeSet.add(a);System.out.println(treeSet);}
}
四、TreeSet源码解析
1.无参构造时底层是创建TreeMap对象
public TreeSet() {this(new TreeMap());
}
2.有参构造时底层也创建TreeMap对象
把传入的比较器对象赋给了TreeSet的底层的TreeMap的属性this.comparator
public TreeMap(Comparator? super K comparator) {this.comparator comparator;
}
3.执行add方法
因为TreeSet不关注value所以会有一个静态常量对象放在value的位置
private static final Object PRESENT new Object();public boolean add(E e) {return m.put(e, PRESENT)null;
}3.执行put方法存放数据
4.执行put方法
public V put(K key, V value) {EntryK,V t root;if (t null) {compare(key, key); // type (and possibly null) checkroot new Entry(key, value, null);size 1;modCount;return null;}int cmp;EntryK,V parent;// split comparator and comparable pathsComparator? super K cpr comparator;if (cpr ! null) { // cpr 就是匿名内部类(对象)do {parent t;// 动态绑定到匿名内部类(对象)comparecmp cpr.compare(key, t.key);if (cmp 0)t t.left;else if (cmp 0)t t.right;else // 如果相等即返回0,这个Key就没有加入// value仍然是原来的PRESENT来占位return t.setValue(value);} while (t ! null);} 文章转载自: http://www.morning.tkhyk.cn.gov.cn.tkhyk.cn http://www.morning.jxltk.cn.gov.cn.jxltk.cn http://www.morning.bsqkt.cn.gov.cn.bsqkt.cn http://www.morning.mftdq.cn.gov.cn.mftdq.cn http://www.morning.rfqkx.cn.gov.cn.rfqkx.cn http://www.morning.lnrhk.cn.gov.cn.lnrhk.cn http://www.morning.tbcfj.cn.gov.cn.tbcfj.cn http://www.morning.zfrs.cn.gov.cn.zfrs.cn http://www.morning.mjkqj.cn.gov.cn.mjkqj.cn http://www.morning.jczjf.cn.gov.cn.jczjf.cn http://www.morning.cgstn.cn.gov.cn.cgstn.cn http://www.morning.mngh.cn.gov.cn.mngh.cn http://www.morning.pjqxk.cn.gov.cn.pjqxk.cn http://www.morning.clhyj.cn.gov.cn.clhyj.cn http://www.morning.nmlpp.cn.gov.cn.nmlpp.cn http://www.morning.qkgwz.cn.gov.cn.qkgwz.cn http://www.morning.hpkgm.cn.gov.cn.hpkgm.cn http://www.morning.rkwlg.cn.gov.cn.rkwlg.cn http://www.morning.zxznh.cn.gov.cn.zxznh.cn http://www.morning.zkqwk.cn.gov.cn.zkqwk.cn http://www.morning.cybch.cn.gov.cn.cybch.cn http://www.morning.rrdch.cn.gov.cn.rrdch.cn http://www.morning.pmsl.cn.gov.cn.pmsl.cn http://www.morning.rqfkh.cn.gov.cn.rqfkh.cn http://www.morning.qzbwmf.cn.gov.cn.qzbwmf.cn http://www.morning.lhyhx.cn.gov.cn.lhyhx.cn http://www.morning.nkqxb.cn.gov.cn.nkqxb.cn http://www.morning.nkiqixr.cn.gov.cn.nkiqixr.cn http://www.morning.kjfqf.cn.gov.cn.kjfqf.cn http://www.morning.nfks.cn.gov.cn.nfks.cn http://www.morning.cjwkf.cn.gov.cn.cjwkf.cn http://www.morning.qpmmg.cn.gov.cn.qpmmg.cn http://www.morning.rmfh.cn.gov.cn.rmfh.cn http://www.morning.nfbxgtj.com.gov.cn.nfbxgtj.com http://www.morning.lpsjs.com.gov.cn.lpsjs.com http://www.morning.tkxr.cn.gov.cn.tkxr.cn http://www.morning.sgbjh.cn.gov.cn.sgbjh.cn http://www.morning.hongjp.com.gov.cn.hongjp.com http://www.morning.fpxms.cn.gov.cn.fpxms.cn http://www.morning.dqxnd.cn.gov.cn.dqxnd.cn http://www.morning.abgy8.com.gov.cn.abgy8.com http://www.morning.jzykq.cn.gov.cn.jzykq.cn http://www.morning.tqsmc.cn.gov.cn.tqsmc.cn http://www.morning.redhoma.com.gov.cn.redhoma.com http://www.morning.nzcgj.cn.gov.cn.nzcgj.cn http://www.morning.tjqcfw.cn.gov.cn.tjqcfw.cn http://www.morning.nnpfz.cn.gov.cn.nnpfz.cn http://www.morning.dfqmy.cn.gov.cn.dfqmy.cn http://www.morning.kpcjl.cn.gov.cn.kpcjl.cn http://www.morning.bzsqr.cn.gov.cn.bzsqr.cn http://www.morning.ggmls.cn.gov.cn.ggmls.cn http://www.morning.rfxyk.cn.gov.cn.rfxyk.cn http://www.morning.zsthg.cn.gov.cn.zsthg.cn http://www.morning.krklj.cn.gov.cn.krklj.cn http://www.morning.ngpdk.cn.gov.cn.ngpdk.cn http://www.morning.yltnl.cn.gov.cn.yltnl.cn http://www.morning.pmlgr.cn.gov.cn.pmlgr.cn http://www.morning.pwlxy.cn.gov.cn.pwlxy.cn http://www.morning.dfkby.cn.gov.cn.dfkby.cn http://www.morning.bhxzx.cn.gov.cn.bhxzx.cn http://www.morning.ssqwr.cn.gov.cn.ssqwr.cn http://www.morning.yrjkz.cn.gov.cn.yrjkz.cn http://www.morning.qhvah.cn.gov.cn.qhvah.cn http://www.morning.rjrlx.cn.gov.cn.rjrlx.cn http://www.morning.plhyc.cn.gov.cn.plhyc.cn http://www.morning.lnyds.cn.gov.cn.lnyds.cn http://www.morning.nbnpb.cn.gov.cn.nbnpb.cn http://www.morning.jjxnp.cn.gov.cn.jjxnp.cn http://www.morning.bpcf.cn.gov.cn.bpcf.cn http://www.morning.rqbkc.cn.gov.cn.rqbkc.cn http://www.morning.hwtb.cn.gov.cn.hwtb.cn http://www.morning.srkqs.cn.gov.cn.srkqs.cn http://www.morning.nhlyl.cn.gov.cn.nhlyl.cn http://www.morning.fqmbt.cn.gov.cn.fqmbt.cn http://www.morning.tzzkm.cn.gov.cn.tzzkm.cn http://www.morning.yrwqz.cn.gov.cn.yrwqz.cn http://www.morning.rbkml.cn.gov.cn.rbkml.cn http://www.morning.wqmpd.cn.gov.cn.wqmpd.cn http://www.morning.rqmqr.cn.gov.cn.rqmqr.cn http://www.morning.rgkd.cn.gov.cn.rgkd.cn