一个十分简单的java字符串分词,去重复,排序小程序

自己写着玩的,很简单。

比如,输入的文本为:"aa bb aa cc bb",那么输出的应该为"aa    bb    cc" 。

 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class SortStringList {
    
    
public static void main(String[] args) {
        String content 
= openFile("D:\\test.txt");
        
//分词
        String[] tokens = content.split("\\s");
        ArrayList
<String> list = new ArrayList<String>();
        
        
for(int i = 0; i < tokens.length; i++) {
            
//p(tokens[i]);
            list.add(tokens[i]);
        }
        
//去重,用简单的set不能保持原来顺序,如果想保持原来顺序可以利用LinkedHashSet
        Set<String> set = new HashSet<String>(list);
        String[] result 
= new String[set.size()];
        Iterator
<String> ite = set.iterator();
        String temp 
= "";
        
for (int i = 0; ite.hasNext(); i++) {
            result[i] 
= (String) ite.next();
            p(result[i]);
        }
        
//排序
        Arrays.sort(result);
        
for(int i = 0; i < result.length; i++) {
            temp 
+= result[i] + "\t";
        }
        p(temp);
        writeFile(temp, 
"D:\\test_sort.txt");
    }
    
    
public static String openFile(String szFileName) {
        
try {
            BufferedReader bis 
= new BufferedReader(new FileReader(szFileName));
            String szContent 
= "";
            String szTemp;
            
            
while((szTemp = bis.readLine()) != null) {
                szContent 
+= szTemp + "\n";
            }
            bis.close();
            
return szContent;
        }
catch(Exception e) {
            e.printStackTrace();
            
return "";
        }
    }
    
    
public static void writeFile(String content, String szFileName) {
        
try {
            BufferedWriter bis 
= new BufferedWriter(new FileWriter(szFileName));
            bis.write(content);
            bis.flush();
            bis.close();
        }
catch(Exception e) {
            e.printStackTrace();
        }
    }
    
    
private static void p(String str) {
        
try{
            System.out.println(str);
        }
catch(Exception e) {
            e.printStackTrace();
        }
    }
}

 

注意,如果用上述代码种简单的set进行去重的话,不会保持原来的顺序,如果想保持原来的顺序,可以利用LinkedHashSet:

 

ArrayList oldList;
java.util.LinkedHashSet set = new LinkedHashSet(oldList);
ArrayList newList = new ArrayList(set);

 

参照自:http://www.pusuo.net/2009-11-05/110967487.html

另外,还可以用最直接的方法,就是添加的时候逐个遍历是否有重复,参考:

http://topic.csdn.net/t/20030701/13/1977559.html

 

 

posted on 2009-04-02 01:45  风在竹林  阅读(2356)  评论(0编辑  收藏  举报