Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 树集字母排序_Java_Sorting_Treeset - Fatal编程技术网

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
程序没有打印任何内容。给我们一个您实际使用的代码示例,以及一些失败的示例输入。