黑马程序员--java集合TreeSet
2013-07-01 21:37
302 查看
-------android培训、java培训、期待与您交流!
----------
»知识点总结
1.TreeSet:可以对Set集合中的元素进行排序。
底层数据结构是二叉树。
保证元素唯一性的依据: compareTo方法return 0.
2. TreeSet排序的第一种方式:让元素自身具备比较性。
元素需要实现Comparable接口,覆盖compareTo方法。
也种方式也成为元素的自然顺序,或者叫做默认顺序。
3. TreeSet的第二种排序方式。
当元素自身不具备比较性时,或者具备的比较性不是所需要的。
这时就需要让集合自身具备比较性。
在集合初始化时,就有了比较方式。
⊙代码练习
----------
----------
»知识点总结
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(){ @Override public 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(){ @Override public 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 { @Override public 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())); } //不实现总是安全的,提高效率 @Override public boolean equals(Object obj) { // TODO Auto-generated method stub return super.equals(obj); } }-------android培训、java培训、期待与您交流!
----------
相关文章推荐
- 黑马程序员_JAVA笔记14——集合框架(List、HashSet、TreeSet)
- 黑马程序员——java基础--集合(篇二)
- Java基础之集合框架(二)--TreeSet、泛型
- 黑马程序员——Java基础---泛型、集合框架工具类:Collections和Arrays、JDK 1.5新特性
- 黑马程序员—————Java基础--------集合
- 黑马程序员_java中的集合2
- 黑马程序员_java中的集合1
- 黑马程序员_Java集合(一)
- 黑马程序员----Java集合框架学习笔记2 Map-工具类-泛型
- 黑马程序员---Java中的集合(二)--List派系
- 黑马程序员_毕向东JAVA基础_集合(2)Collection&&List&&Set&&泛型
- 黑马程序员_Java基础_集合框架成员Map
- 黑马程序员--Java面向对象——集合框架总结
- 黑马程序员-java基础-集合
- 黑马程序员——Java基础——集合类、Collection、List体系、集合框架LinkedList操作等
- 黑马程序员-------Java笔记-------集合综合题(常考的三种题)
- 黑马程序员_java语言_Map集合
- 黑马程序员_Java集合概述
- 黑马程序员-03-java中的集合特性
- 黑马程序员----java集合的分类与示例