黑马程序员--java集合TreeSet

来源:互联网 发布:js改变body的display 编辑:程序博客网 时间:2024/05/16 18:53

-------android培训java培训、期待与您交流!     ---------- 

»知识点总结

1.TreeSet:可以对Set集合中的元素进行排序。
 底层数据结构是二叉树。
 保证元素唯一性的依据: compareTo方法return 0.

2. TreeSet排序的第一种方式:让元素自身具备比较性。
 元素需要实现Comparable接口,覆盖compareTo方法。
 也种方式也成为元素的自然顺序,或者叫做默认顺序。

3. TreeSet的第二种排序方式。
 当元素自身不具备比较性时,或者具备的比较性不是所需要的。
 这时就需要让集合自身具备比较性。
 在集合初始化时,就有了比较方式。

代码练习

public static void main(String[] args){//"90 -7 0 18 2 45 4" 将字符串中的数值进行排序。使用TreeSet完成。String str = "90 -7 0 18 2 45 4";String[] ss = str.split(" ");TreeSet ts6 = new TreeSet();for(String s : ss){ts6.add(Integer.parseInt(s));}String str2 = ts6.toString();String str3 = str2.replace(",", " ");//str3= str3.replace((CharSequence) new Regexp("[\\[\\]]"), "");A.print(str3);String[] chs = str.split(" ");TreeSet ts5 = new TreeSet(new Comparator(){@Overridepublic int compare(Object o1, Object o2){Integer i1 = new Integer((String)o1);Integer i2 = new Integer((String)o2);return i1.compareTo(i2);}});for(String s : chs){ts5.add(s);}Object[] strArr =  ts5.toArray();StringBuilder sb = new StringBuilder();for(int i=0, len=strArr.length; i<len; i++){String str1 = (String) strArr[i];sb.append(str1);if(i<len-1)sb.append(" ");}String str2 = sb.toString();A.print("-"+str2+"-");//按照字符串长度排序TreeSet ts4 = new TreeSet(new Comparator(){@Overridepublic int compare(Object o1, Object o2){String s1 = (String)o1;String s2 = (String)o2;int r = new Integer(s1.length()).compareTo(new Integer(s2.length()));if(r != 0)return r;return s1.compareTo(s2);}});ts4.add("aa");ts4.add("x");ts4.add("ab");ts4.add("bcd");ts4.add("ac");A.print(ts4);//TreeSet ts3 = new TreeSet(new StudentComparator());TreeSet ts3 = new TreeSet();ts3.add(new Student("w1", 20));ts3.add(new Student("w2", 30));ts3.add(new Student("w3", 20));//ts3.add(new Student("w2", 20));A.print(ts3);TreeSet ts2 = new TreeSet();ts2.add(new Student("w1", 20));ts2.add(new Student("w2", 30));ts2.add(new Student("w3", 40));ts2.add(new Student("w1", 20));ts2.add(new Student("w4", 40));for(Iterator it=ts2.iterator(); it.hasNext();){A.print(it.next());}}}class StudentComparator implements Comparator{@Overridepublic int compare(Object o1, Object o2){Student s1 = (Student)o1;Student s2 = (Student)o2;A.print(s1.getName()+"-->"+s2.getName());int r = s2.getName().compareTo(s1.getName());if(r!=0)return r;return new Integer(s2.getAge()).compareTo(new Integer(s1.getAge()));}//不实现总是安全的,提高效率@Overridepublic boolean equals(Object obj){// TODO Auto-generated method stubreturn super.equals(obj);}}
-------android培训java培训、期待与您交流!     ---------- 

原创粉丝点击