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

  • 相关阅读:
    pythonselenium 3种等待方式
    SQL Server2008生成数据库字典
    C# 二分法查找和排序
    JavaScript 中的面向对象的初步认识
    分享一个通过面向对象方式完成的拖拽功能
    javascript 面向对象的继承的实现
    【转】ASP.NET MVC 3 Service Location, Part 3: View Engines/View Pages
    【转】ASP.NET MVC 3 Service Location, Part 2: Controllers
    【转】ASP.NET MVC 3 Service Location, Part 8: Value Providers
    【转】ASP.NET MVC 3 Service Location, Part 6: Model Validation
  • 原文地址:https://www.cnblogs.com/fzzl/p/1427659.html
Copyright © 2020-2023  润新知