黑马程序员_日记46_TreeSet练习
2015-04-15 17:49
155 查看
——- android培训、java培训、期待与您交流! ———-
练习:
比较字符串长度,按字符串长度排序!
分析:
字符串本身是具备比较性的int compareTo(String str);
但是这里要比较的是字符串长度,
所以需要用比较器让集合具备比较性,
使用的是TreeSet的第二种排序方式
运行结果:
c
ab
ebc
aaab
aaad
decsa
fbcded
![](https://img-blog.csdn.net/20150415174930677)
总结:
1 建类实现比较器接口,重写compare方法
2 主要条件,判断字符串长度关系
3 次要条件:判断字符串字典序
注意:这里也可以用内部类实现!
内部类实现的代码如下:
练习:
比较字符串长度,按字符串长度排序!
分析:
字符串本身是具备比较性的int compareTo(String str);
但是这里要比较的是字符串长度,
所以需要用比较器让集合具备比较性,
使用的是TreeSet的第二种排序方式
import java.util.*; //1 创建类实现比较器 class MyComparator implements Comparator { //覆盖compare(o1,o2)方法 public int compare(Object o1,Object o2) { //强制转换为String String str1 = (String)o1; String str2 = (String)o2; //比较字符串长度 int num =new Integer(str1.length()).compareTo(new Integer(str2.length())); //当字符串长度相等,按字符串字典序排序 if( num == 0) return str1.compareTo(str2); //否则按字符串长度排序 return num; } } //主类 class TreeSetTest { public static void main(String[] args) { //创建集合,传入比较器 TreeSet ts = new TreeSet(new MyComparator()); //添加字符串对象 ts.add("decsa"); ts.add("ab"); ts.add("aaad"); ts.add("aaad"); ts.add("aaab"); ts.add("ebc"); ts.add("fbcded"); ts.add("c"); //迭代取出 for(Iterator it = ts.iterator(); it.hasNext(); ) System.out.println(it.next()); } }
运行结果:
c
ab
ebc
aaab
aaad
decsa
fbcded
总结:
1 建类实现比较器接口,重写compare方法
2 主要条件,判断字符串长度关系
3 次要条件:判断字符串字典序
注意:这里也可以用内部类实现!
内部类实现的代码如下:
//主类 class TreeSetTest { public static void main(String[] args) { //创建集合,传入比较器 TreeSet ts = new TreeSet(new Comparator() { //覆盖compare(o1,o2)方法 public int compare(Object o1,Object o2) { //强制转换为String String str1 = (String)o1; String str2 = (String)o2; //比较字符串长度 int num =new Integer(str1.length()).compareTo(new Integer(str2.length())); //当字符串长度相等,按字符串字典序排序 if( num == 0) return str1.compareTo(str2); //否则按字符串长度排序 return num; } } ); //添加字符串对象 ts.add("decsa"); ts.add("ab"); ts.add("aaad"); ts.add("aaad"); ts.add("aaab"); ts.add("ebc"); ts.add("fbcded"); ts.add("c"); //迭代取出 for(Iterator it = ts.iterator(); it.hasNext(); ) System.out.println(it.next()); } }
相关文章推荐
- 黑马程序员--Java学习日记之常见类的功能概述(多练习)
- 黑马程序员_日记26_Java字典序排序练习
- 黑马程序员——学习日记之控制语句练习
- 黑马程序员_日记60_TreeMap字符串中字符出现次数练习
- 黑马程序员_日记44_TreeSet第一种排序方式小结
- 黑马程序员_日记58_HashMap自定义对象存取练习
- 黑马程序员_学习日记46_614数据库开发及ADO.Net(约束、数据检索)
- 黑马程序员_日记24_字符串获取计数练习
- 黑马程序员_日记8_JavaSE阶段性习题练习及复习
- 黑马程序员_日记42_HashSet自定义对象去重练习
- 黑马程序员_日记59_TreeMap自定义对象练习
- 黑马程序员_日记23_字符串反转练习
- 黑马程序员_日记54_TreeSet使用比较器和泛型的初级结合
- 黑马程序员-Map练习学习日记
- 黑马程序员_日记22_JavaStringTrim练习
- 黑马程序员_日记55_TreeSet、泛型限定和比较器限定方式的综合运用方式
- 黑马程序员_日记38_LinkedList建立堆栈练习
- 黑马程序员(学习日记2示例练习)
- 黑马程序员_学习日记29_winphone7开发_概述
- 黑马程序员_日记12_多线程(二)