日期:2014-05-20  浏览次数:20779 次

从文本文件中读取单词,并将所有不重复的单词按升序显示
/*
从文本文件中读取单词,并将所有不重复的单词按升序显示

将命令行获取的文件按行读入,然后将每行文件内容按字符串处理为单词形式
按行读入可以使用BufferedReader 类的readLine()方法,
每行处理为单词可以使StringTokenizer 类或者String 类的split()方法。

使用泛型技术创建字符串规则集,不重复地存放单词;  
由散列集创建树形集,形成单词的自然排列顺序(升序)。
*/
import java.io.*;
import java.util.*;
class  Demo2
{
public static void main(String[] args)throws IOException 
{
      BufferedReader br=new BufferedReader(new FileReader(args[0]));//文本文件作为命令行传递
      Set<String> set=new HashSet<String>();
  String t="";
     while((t=br.readLine())!=null)
{
   String[] words=t.split("\n\t\r.,;:?!");
   for(int i=0;i<words.length;i++)
{ set.add(words[i]);}
 }
   sop(set);
 TreeSet<String> ts=new TreeSet<String>(set);
 sop(ts);
   }

   public static void sop(Set s)
{
   Iterator it=s.iterator();
   while(it.hasNext())
{
          System.out.println(it.next());
        }
   }
}




谁告诉那里写错了?输出是原文,未去除重复,也没排序。初学,求解答
string iterator class

------解决方案--------------------

String[] words = t.split("\\W");// \W 一个非单词的字符

------解决方案--------------------

public class Demo2 {
public static void main(String[] args) throws IOException {
String path = "F:\\word.txt";//改成你的文件路径
BufferedReader br = new BufferedReader(new FileReader(path));
Set<String> set = new HashSet<String>();
String t = "";
while ((t = br.readLine()) != null) {
String[] words = t.split("\\W");
for (int i = 0; i < words.length; i++) {
set.add(words[i]);
}
}
sop(set);
TreeSet<String> ts = new TreeSet<String>(set);
sop(ts);
}

public static void sop(Set s) {
Iterator it = s.iterator();
while (it.hasNext()) {
System.out.print(it.next() + " ");
}
System.out.println();
}

}

------解决方案--------------------
改成
t.split("\\W+");更合适一些 

或者
 String[] words=t.split("\n\t\r.,;:?!");
这一句改成
String[] words=t.split("[\n\t\r.,;:?!]");