Java 树集字母排序
如何使树集按字母顺序排序? 并删除重复项。。这一天我都快发疯了。也许我需要睡一觉Java 树集字母排序,java,sorting,treeset,Java,Sorting,Treeset,如何使树集按字母顺序排序? 并删除重复项。。这一天我都快发疯了。也许我需要睡一觉 public static void main(String[] args) { String fileName = args[0]; String words; Scanner s = null; Iterator itr; try { s = new Scanner(new BufferedReader(n
public static void main(String[] args) {
String fileName = args[0];
String words;
Scanner s = null;
Iterator itr;
try {
s = new Scanner(new BufferedReader(new FileReader(fileName)));
while (s.hasNext()) {
words = s.next();
TreeSet<String> ts = new TreeSet<String>();
ts.add(words);
System.out.println(ts);
}
} catch (FileNotFoundException fnfe) {
System.exit(0);
} finally {
if (s != null) {
s.close();
}
}
}
publicstaticvoidmain(字符串[]args){
字符串文件名=args[0];
字符串;
扫描器s=null;
迭代器itr;
试一试{
s=新的扫描仪(新的BufferedReader(新的文件读取器(文件名));
而(s.hasNext()){
words=s.next();
树集ts=新树集();
ts.add(字);
系统输出打印项次(ts);
}
}捕获(FileNotFoundException fnfe){
系统出口(0);
}最后{
如果(s!=null){
s、 close();
}
}
}
TreeSet
将集合保存在树结构中,该树结构自动按自然顺序排序。每个实现可比较
接口的类都将被排序。String类已经实现了Comparable
接口,因此您无需对其进行任何排序,只需将其添加到TreeSet
如果hashCode()
和equals()
方法是按应该的方式实现的,则集合不能包含重复项
编辑:树集=新树集()代码>位于
while()
循环范围内。您在每个循环中初始化它,并在上一个循环中丢失数据drom。在循环外声明它,不要使用Collection.sort()
是否有重复项?在一个集合中?你正在为每个单词创建一个新的树集…@KatjaChristiansen好吧,这是可能的-使用设计糟糕的hashCode()
或equals()
-但我想使用封闭的字符串
类:)为所有单词创建一个TreeSet
,不要费心调用集合。对其进行排序。对于字符串,hashCode
和equals
已经为您实现(正确)…99.999%的情况是肯定的,但两个不同的字符串仍然可能发生哈希冲突(相同的哈希)@emd-哈希冲突的可能性是equals
方法也需要正确实现的原因。我正在使用文本文件导入单词,这些单词是“这是导入函数的测试”。(所以有一个重复的词)。但是如果它是自动排序的,为什么它会在文本文件中按顺序显示而不是按字母顺序显示,而且重复的单词也不会被删除?对不起,如果这是一个noob问题!您给我们的main
程序没有打印任何内容。给我们一个您实际使用的代码示例,以及一些失败的示例输入。