【发布时间】:2013-09-27 04:54:33
【问题描述】:
我正在尝试按字符串长度对数组列表进行排序,我知道实现比较器,但我想知道这是否可以在我的函数中完成,而不添加任何额外的类或方法?理想情况下,我想从最短到最长输出它们,但我可以做到!
这是我想用来实现比较器的方法的 sn-p。
public static void sCompare(BufferedReader r, PrintWriter w) throws IOException {
ArrayList<String> s= new ArrayList<String>();
String line;
int n = 0;
while ((line = r.readLine()) != null) {
s.add(line);
n++;
}
//Collections.sort(s);
Iterator<String> i = s.iterator();
while (i.hasNext()) {
w.println(i.next());
}
}
提前感谢您的任何意见!
【问题讨论】:
-
你可以用循环来实现排序的逻辑,但你为什么不去比较器呢?
-
如果你愿意,你可以使用匿名类..
-
@JigarJoshi 我正在寻找最有效的方法。并且更喜欢使用一个类。有没有可能的有效解决方案?
-
添加另一个类不会影响效率,
Collections.sort()工作于n log(n) -
第一部分获取您的文件,并为每一行生成其长度,后跟空格,然后是行。第二部分在第 1 列(即长度)上按数字排序。最后一部分通过用虚无替换数字序列和空间来消除长度列。这都是非常基本的 shell 东西;如果你不熟悉,那也没关系。但恕我直言,非常值得学习。
标签: java string sorting comparator