自己写着玩的,很简单。
比如,输入的文本为:"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();
}
}
}
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);
java.util.LinkedHashSet set = new LinkedHashSet(oldList);
ArrayList newList = new ArrayList(set);
参照自:http://www.pusuo.net/2009-11-05/110967487.html
另外,还可以用最直接的方法,就是添加的时候逐个遍历是否有重复,参考: