Treeset按字母顺序排序

A C*_*A C 3 java sorting treeset

如何让treeset按字母顺序排序?并删除重复..它一直让我疯了一天.也许我需要睡个好觉..

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();
                }
            }
    }        
Run Code Online (Sandbox Code Playgroud)

emd*_*emd 6

TreeSet将集合保存在树结构中,该树结构按自然顺序自动排序.实现Comparable接口的每个类都将被排序.String类Comparable已经实现了接口,因此您无需对其进行排序,只需将其添加到TreeSet.

如果hashCode()equals()方法的实现方式如何,则集不能包含重复项.

编辑:TreeSet<String> ts = new TreeSet<String>();位于while()循环范围内.您正在每个循环初始化它并丢失前一个数据.在循环外声明它,不要使用Collection.sort()

  • 而对于`String`,`hashCode`和`equals`已经为您实现(正确)... (2认同)
  • @emd - 哈希冲突的可能性是`equals`方法也需要实现和正确实现的原因. (2认同)