黑马程序员技术交流社区

标题: 怎么能让String的compareTo方法不比较字符串的长度? [打印本页]

作者: 867379393    时间: 2015-9-24 18:09
标题: 怎么能让String的compareTo方法不比较字符串的长度?
  1. public class Test {
  2.         public static void main(String[] args) {
  3.                 BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
  4.                 BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
  5.                
  6.                 StringSort ss = new StringSort();
  7.                 TreeSet<String> strings = new TreeSet<String>(ss);
  8.                 String line = null;
  9.                 try {
  10.                         while((line = input.readLine())!= null){
  11.                                 if("end".equals(line)){
  12.                                         break;
  13.                                 }
  14.                                 strings.add(line);
  15.                         }
  16.                         Iterator<String> it = strings.iterator();
  17.                         while(it.hasNext()){
  18.                                 String str = it.next();
  19.                                 out.write(str);
  20.                                 out.newLine();
  21.                                 out.flush();
  22.                         }
  23.                 } catch (IOException e) {
  24.                         e.printStackTrace();
  25.                 }finally{
  26.                         if(input != null){
  27.                                 try {
  28.                                         input.close();
  29.                                 } catch (IOException e) {
  30.                                         e.printStackTrace();
  31.                                 }
  32.                         }
  33.                         if(out != null){
  34.                                 try {
  35.                                         out.close();
  36.                                 } catch (IOException e) {
  37.                                         // TODO Auto-generated catch block
  38.                                         e.printStackTrace();
  39.                                 }
  40.                         }
  41.                 }
  42.         }
  43. }

  44. class StringSort implements Comparator<String>{

  45.         @Override
  46.         public int compare(String s1, String s2) {
  47.                 return s2.compareTo(s1);
  48.         }
复制代码
怎么才能让这段代码正确的将录入的字符串按照字典倒序打印出来?
作者: DD_vincent    时间: 2015-9-24 18:32
  1. StringSort ss = new StringSort();
  2. TreeSet<String> strings = new TreeSet<String>(ss);
复制代码

这里,TreeSet()在构造时只能接受Conparator类型的对象作为参数,所以应该把代码改成
  1. Comparator ss = new StringSort();
  2. TreeSet<String> strings = new TreeSet<String>(ss);
复制代码

作者: 867379393    时间: 2015-9-25 22:17
DD_vincent 发表于 2015-9-24 18:32
这里,TreeSet()在构造时只能接受Conparator类型的对象作为参数,所以应该把代码改成
...

不是只要是它的子类就可以吗?
作者: DD_vincent    时间: 2015-9-25 23:49
867379393 发表于 2015-9-25 22:17
不是只要是它的子类就可以吗?

TreeSet(Comparator<? super E> comparator)
Constructs a new, empty tree set, sorted according to the specified comparator.

只能是Comparator类的对象
作者: 安仔    时间: 2015-9-26 10:40
字符串缓冲区的字符串是一个整体啊,要想倒序排序,转换成字符串数组呗
作者: 867379393    时间: 2015-9-26 14:44
安仔 发表于 2015-9-26 10:40
字符串缓冲区的字符串是一个整体啊,要想倒序排序,转换成字符串数组呗

知道了 谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2