一个十分简单的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

 

 

转载于:https://www.cnblogs.com/fzzl/archive/2009/04/02/1427659.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值